diff options
| author | Po Lu | 2021-12-31 13:03:07 +0000 |
|---|---|---|
| committer | Po Lu | 2021-12-31 13:03:07 +0000 |
| commit | 7dd4dc6ace22aab91939176cb623d54cdb1788e4 (patch) | |
| tree | d5e0cf406ab2784d09e4c48942d2546365b29f17 /src | |
| parent | a8c3e8e2a6efa77b38110a9c1fee1ece8d8da4d5 (diff) | |
| download | emacs-7dd4dc6ace22aab91939176cb623d54cdb1788e4.tar.gz emacs-7dd4dc6ace22aab91939176cb623d54cdb1788e4.zip | |
On Haiku, sync a frames's connection to the app sever after raising
* src/haiku_support.h: (BWindow_sync)
* src/haiku_support.cc (BWindow_sync): New function.
* src/haikuterm.c (haiku_frame_raise_lower): Synchronize window
after raising it to avoid situations where raising windows is
done out-of-order, such as when ediff raises a frame.
Diffstat (limited to 'src')
| -rw-r--r-- | src/haiku_support.cc | 12 | ||||
| -rw-r--r-- | src/haiku_support.h | 3 | ||||
| -rw-r--r-- | src/haikuterm.c | 2 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/haiku_support.cc b/src/haiku_support.cc index fea0684b1b4..dae0825bd29 100644 --- a/src/haiku_support.cc +++ b/src/haiku_support.cc | |||
| @@ -2901,6 +2901,18 @@ BWindow_set_min_size (void *window, int width, int height) | |||
| 2901 | w->UnlockLooper (); | 2901 | w->UnlockLooper (); |
| 2902 | } | 2902 | } |
| 2903 | 2903 | ||
| 2904 | /* Synchronize WINDOW's connection to the App Server. */ | ||
| 2905 | void | ||
| 2906 | BWindow_sync (void *window) | ||
| 2907 | { | ||
| 2908 | BWindow *w = (BWindow *) window; | ||
| 2909 | |||
| 2910 | if (!w->LockLooper ()) | ||
| 2911 | gui_abort ("Failed to lock window looper for sync"); | ||
| 2912 | w->Sync (); | ||
| 2913 | w->UnlockLooper (); | ||
| 2914 | } | ||
| 2915 | |||
| 2904 | /* Set the alignment of WINDOW's dimensions. */ | 2916 | /* Set the alignment of WINDOW's dimensions. */ |
| 2905 | void | 2917 | void |
| 2906 | BWindow_set_size_alignment (void *window, int align_width, int align_height) | 2918 | BWindow_set_size_alignment (void *window, int align_width, int align_height) |
diff --git a/src/haiku_support.h b/src/haiku_support.h index 9f5f3c77e3d..b08a561def3 100644 --- a/src/haiku_support.h +++ b/src/haiku_support.h | |||
| @@ -819,6 +819,9 @@ extern "C" | |||
| 819 | extern void | 819 | extern void |
| 820 | BWindow_set_size_alignment (void *window, int align_width, int align_height); | 820 | BWindow_set_size_alignment (void *window, int align_width, int align_height); |
| 821 | 821 | ||
| 822 | extern void | ||
| 823 | BWindow_sync (void *window); | ||
| 824 | |||
| 822 | #ifdef __cplusplus | 825 | #ifdef __cplusplus |
| 823 | extern void * | 826 | extern void * |
| 824 | find_appropriate_view_for_draw (void *vw); | 827 | find_appropriate_view_for_draw (void *vw); |
diff --git a/src/haikuterm.c b/src/haikuterm.c index 24fa44b01d0..9b54e50b617 100644 --- a/src/haikuterm.c +++ b/src/haikuterm.c | |||
| @@ -346,7 +346,7 @@ haiku_frame_raise_lower (struct frame *f, bool raise_p) | |||
| 346 | { | 346 | { |
| 347 | block_input (); | 347 | block_input (); |
| 348 | BWindow_activate (FRAME_HAIKU_WINDOW (f)); | 348 | BWindow_activate (FRAME_HAIKU_WINDOW (f)); |
| 349 | flush_frame (f); | 349 | BWindow_sync (FRAME_HAIKU_WINDOW (f)); |
| 350 | unblock_input (); | 350 | unblock_input (); |
| 351 | } | 351 | } |
| 352 | } | 352 | } |