summaryrefslogtreecommitdiff
path: root/src/haiku_support.cc
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-05-18 04:07:31 +0000
committerPo Lu <luangruo@yahoo.com>2022-05-18 04:07:31 +0000
commitc258528cfbc27f1f7e7604425a4c3d3dc78408bb (patch)
tree2918dd4fcfdd0330a6dee8b5ad2bf7aa81e91f4a /src/haiku_support.cc
parent55198d179671739048701068fb1f40056d37c493 (diff)
downloademacs-c258528cfbc27f1f7e7604425a4c3d3dc78408bb.tar.gz
Fix race conditions when calculating Haiku frame geometry
* src/haiku_support.cc (be_lock_window, be_unlock_window): New functions. * src/haiku_support.h: Update prototypes. * src/haikufns.c (frame_geometry): Lock window before asking for its dimensions and frame.
Diffstat (limited to 'src/haiku_support.cc')
-rw-r--r--src/haiku_support.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index 28c86085847..0c126dab3d6 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -5163,3 +5163,20 @@ be_send_move_frame_event (void *window)
msg.SendMessage (SEND_MOVE_FRAME_EVENT);
}
+
+void
+be_lock_window (void *window)
+{
+ BWindow *wnd = (BWindow *) window;
+
+ if (!wnd->LockLooper ())
+ gui_abort ("Failed to lock window looper");
+}
+
+void
+be_unlock_window (void *window)
+{
+ BWindow *wnd = (BWindow *) window;
+
+ wnd->UnlockLooper ();
+}