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 ();
+}
extern void be_get_window_decorator_frame (void *, int *, int *, int *, int *);
extern void be_send_move_frame_event (void *);
+extern void be_lock_window (void *);
+extern void be_unlock_window (void *);
#ifdef __cplusplus
}
frame_geometry (Lisp_Object frame, Lisp_Object attribute)
{
struct frame *f, *parent;
+ void *window;
int outer_x, outer_y, outer_width, outer_height;
int right_off, bottom_off, top_off;
int native_x, native_y;
f = decode_window_system_frame (frame);
parent = FRAME_PARENT_FRAME (f);
+ window = FRAME_HAIKU_WINDOW (f);
+
+ be_lock_window (window);
+ be_get_window_decorator_frame (window, &outer_x, &outer_y,
+ &outer_width, &outer_height);
+ be_get_window_decorator_dimensions (window, NULL, &top_off,
+ &right_off, &bottom_off);
+ be_unlock_window (window);
- be_get_window_decorator_frame (FRAME_HAIKU_WINDOW (f), &outer_x,
- &outer_y, &outer_width, &outer_height);
- be_get_window_decorator_dimensions (FRAME_HAIKU_WINDOW (f), NULL,
- &top_off, &right_off, &bottom_off);
native_x = FRAME_OUTPUT_DATA (f)->frame_x;
native_y = FRAME_OUTPUT_DATA (f)->frame_y;