1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-13 06:50:39 -08:00

Fix child frame synchronization order on Haiku

* src/haiku_support.cc (DoMove):
(FrameMoved): Fix locking and sync order semantics.
This commit is contained in:
Po Lu 2022-01-01 07:09:38 +00:00
parent c7e642bab2
commit cbc77dcf03

View file

@ -414,11 +414,8 @@ public:
DoMove (struct child_frame *f)
{
BRect frame = this->Frame ();
if (!f->window->LockLooper ())
gui_abort ("Failed to lock child frame window for move");
f->window->MoveTo (frame.left + f->xoff,
frame.top + f->yoff);
f->window->UnlockLooper ();
}
void
@ -652,21 +649,24 @@ public:
if (!child_frame_lock.Lock ())
gui_abort ("Failed to lock child frame state lock");
for (struct child_frame *f = subset_windows;
f; f = f->next)
DoMove (f);
child_frame_lock.Unlock ();
Sync ();
BWindow::FrameMoved (newPosition);
}
void
WorkspacesChanged (uint32_t old, uint32_t n)
{
if (!child_frame_lock.Lock ())
gui_abort ("Failed to lock child frames for changing workspaces");
for (struct child_frame *f = subset_windows;
f; f = f->next)
DoUpdateWorkspace (f);
child_frame_lock.Unlock ();
}
void