diff options
author | Po Lu <luangruo@yahoo.com> | 2022-05-18 04:07:31 +0000 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2022-05-18 04:07:31 +0000 |
commit | c258528cfbc27f1f7e7604425a4c3d3dc78408bb (patch) | |
tree | 2918dd4fcfdd0330a6dee8b5ad2bf7aa81e91f4a /src/haiku_support.cc | |
parent | 55198d179671739048701068fb1f40056d37c493 (diff) | |
download | emacs-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.cc | 17 |
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 (); +} |