diff options
| author | Po Lu | 2022-02-07 14:58:32 +0800 |
|---|---|---|
| committer | Po Lu | 2022-02-07 14:59:06 +0800 |
| commit | 61a5bbc6836337479f5d8dba1897380b1c63bc25 (patch) | |
| tree | d2e69a3ae522553d8a11b351ee1c7f7ce0885bcb /src | |
| parent | f91a911ef339975a39ae5e4b41eeab0be7824b25 (diff) | |
| download | emacs-61a5bbc6836337479f5d8dba1897380b1c63bc25.tar.gz emacs-61a5bbc6836337479f5d8dba1897380b1c63bc25.zip | |
Really fix extended frame synchronization
* src/xterm.c (XTframe_up_to_date): Make sure the extended
counter ends up even.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xterm.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/xterm.c b/src/xterm.c index d3d8dc468cd..49fc2b1bb74 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -1848,6 +1848,12 @@ x_update_end (struct frame *f) | |||
| 1848 | static void | 1848 | static void |
| 1849 | XTframe_up_to_date (struct frame *f) | 1849 | XTframe_up_to_date (struct frame *f) |
| 1850 | { | 1850 | { |
| 1851 | #ifdef HAVE_XSYNC | ||
| 1852 | XSyncValue add; | ||
| 1853 | XSyncValue current; | ||
| 1854 | Bool overflow_p; | ||
| 1855 | #endif | ||
| 1856 | |||
| 1851 | eassert (FRAME_X_P (f)); | 1857 | eassert (FRAME_X_P (f)); |
| 1852 | block_input (); | 1858 | block_input (); |
| 1853 | FRAME_MOUSE_UPDATE (f); | 1859 | FRAME_MOUSE_UPDATE (f); |
| @@ -1867,12 +1873,15 @@ XTframe_up_to_date (struct frame *f) | |||
| 1867 | if (FRAME_X_OUTPUT (f)->ext_sync_end_pending_p | 1873 | if (FRAME_X_OUTPUT (f)->ext_sync_end_pending_p |
| 1868 | && FRAME_X_EXTENDED_COUNTER (f) != None) | 1874 | && FRAME_X_EXTENDED_COUNTER (f) != None) |
| 1869 | { | 1875 | { |
| 1870 | XSyncValue add; | 1876 | current = FRAME_X_OUTPUT (f)->current_extended_counter_value; |
| 1871 | Bool overflow_p; | 1877 | |
| 1878 | if (XSyncValueLow32 (current) % 2) | ||
| 1879 | XSyncIntToValue (&add, 1); | ||
| 1880 | else | ||
| 1881 | XSyncIntToValue (&add, 2); | ||
| 1872 | 1882 | ||
| 1873 | XSyncIntToValue (&add, 1); | ||
| 1874 | XSyncValueAdd (&FRAME_X_OUTPUT (f)->current_extended_counter_value, | 1883 | XSyncValueAdd (&FRAME_X_OUTPUT (f)->current_extended_counter_value, |
| 1875 | add, add, &overflow_p); | 1884 | current, add, &overflow_p); |
| 1876 | 1885 | ||
| 1877 | if (overflow_p) | 1886 | if (overflow_p) |
| 1878 | emacs_abort (); | 1887 | emacs_abort (); |