diff options
author | Po Lu <luangruo@yahoo.com> | 2022-01-01 05:32:42 +0000 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2022-01-01 05:32:42 +0000 |
commit | d7e1ed17d9d60ab0fe306d1216f695fd96d51956 (patch) | |
tree | 123185586180d438c4773f311e42942d15527132 /src/haiku_support.cc | |
parent | 4521a3a19c123c43f4bb7ad21a94456434ef81f4 (diff) | |
download | emacs-d7e1ed17d9d60ab0fe306d1216f695fd96d51956.tar.gz emacs-d7e1ed17d9d60ab0fe306d1216f695fd96d51956.tar.bz2 emacs-d7e1ed17d9d60ab0fe306d1216f695fd96d51956.zip |
Flush frames after mouse face is cleared on a child frame in Haiku
* src/haiku_support.cc (~EmacsWindow):
(UpwardsSubsetChildren):
(UpwardsUnSubsetChildren): Fix locking semantics.
* src/haikuterm.c (haiku_read_socket): Flush dirty back buffers
after clearing mouse face because the pointer was moved out of a
frame.
Diffstat (limited to 'src/haiku_support.cc')
-rw-r--r-- | src/haiku_support.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/haiku_support.cc b/src/haiku_support.cc index dae0825bd29..32e61d96604 100644 --- a/src/haiku_support.cc +++ b/src/haiku_support.cc @@ -259,7 +259,10 @@ public: struct child_frame *next; for (struct child_frame *f = subset_windows; f; f = next) { + if (f->window->LockLooper ()) + gui_abort ("Failed to lock looper for unparent"); f->window->Unparent (); + f->window->UnlockLooper (); next = f->next; delete f; } @@ -279,6 +282,8 @@ public: void UpwardsSubsetChildren (EmacsWindow *w) { + if (!LockLooper ()) + gui_abort ("Failed to lock looper for subset"); if (!child_frame_lock.Lock ()) gui_abort ("Failed to lock child frame state lock"); UpwardsSubset (w); @@ -286,6 +291,7 @@ public: f = f->next) f->window->UpwardsSubsetChildren (w); child_frame_lock.Unlock (); + UnlockLooper (); } void @@ -298,6 +304,8 @@ public: void UpwardsUnSubsetChildren (EmacsWindow *w) { + if (!LockLooper ()) + gui_abort ("Failed to lock looper for unsubset"); if (!child_frame_lock.Lock ()) gui_abort ("Failed to lock child frame state lock"); UpwardsUnSubset (w); @@ -305,6 +313,7 @@ public: f = f->next) f->window->UpwardsUnSubsetChildren (w); child_frame_lock.Unlock (); + UnlockLooper (); } void |