#include "obrender/render.h"
#include "gettext.h"
#include "obt/display.h"
+#include "obt/xqueue.h"
#include "obt/prop.h"
#include "obt/mainloop.h"
current_wm_sn_owner = None;
}
- timestamp = event_get_server_time();
+ timestamp = event_time();
XSetSelectionOwner(obt_display, wm_sn_atom, screen_support_win,
timestamp);
/* Wait for old window manager to go away */
if (current_wm_sn_owner) {
- XEvent event;
gulong wait = 0;
const gulong timeout = G_USEC_PER_SEC * 15; /* wait for 15s max */
+ ObtXQueueWindowType wt;
+
+ wt.window = current_wm_sn_owner;
+ wt.type = DestroyNotify;
while (wait < timeout) {
- if (XCheckWindowEvent(obt_display, current_wm_sn_owner,
- StructureNotifyMask, &event) &&
- event.type == DestroyNotify)
+ /* Checks the local queue and incoming events for this event */
+ if (xqueue_exists_local(xqueue_match_window_type, &wt))
break;
g_usleep(G_USEC_PER_SEC / 10);
wait += G_USEC_PER_SEC / 10;
event_end_ignore_all_enters(ignore_start);
- if (event_curtime != CurrentTime)
- screen_desktop_user_time = event_curtime;
+ if (event_source_time() != CurrentTime)
+ screen_desktop_user_time = event_source_time();
}
void screen_add_desktop(gboolean current)
void screen_show_desktop_popup(guint d, gboolean perm)
{
- Rect *a;
+ const Rect *a;
/* 0 means don't show the popup */
if (!config_desktop_popup_time) return;
g_direct_equal, NULL);
if (perm)
desktop_popup_perm = TRUE;
-
- g_free(a);
}
void screen_hide_desktop_popup(void)
return a;
}
-guint screen_find_monitor(Rect *search)
+guint screen_find_monitor(const Rect *search)
{
guint i;
guint most = screen_num_monitors;
guint mostv = 0;
for (i = 0; i < screen_num_monitors; ++i) {
- Rect *area = screen_physical_area_monitor(i);
+ const Rect *area = screen_physical_area_monitor(i);
if (RECT_INTERSECTS_RECT(*area, *search)) {
Rect r;
guint v;
most = i;
}
}
- g_free(area);
}
return most;
}
-Rect* screen_physical_area_all_monitors(void)
+const Rect* screen_physical_area_all_monitors(void)
{
return screen_physical_area_monitor(screen_num_monitors);
}
-Rect* screen_physical_area_monitor(guint head)
+const Rect* screen_physical_area_monitor(guint head)
{
- Rect *a;
g_assert(head <= screen_num_monitors);
- a = g_new(Rect, 1);
- *a = monitor_area[head];
- return a;
+ return &monitor_area[head];
}
gboolean screen_physical_area_monitor_contains(guint head, Rect *search)
return screen_monitor_pointer();
}
-Rect* screen_physical_area_active(void)
+const Rect* screen_physical_area_active(void)
{
return screen_physical_area_monitor(screen_monitor_active());
}
return screen_monitor_pointer();
}
-Rect *screen_physical_area_primary(gboolean fixed)
+const Rect* screen_physical_area_primary(gboolean fixed)
{
return screen_physical_area_monitor(screen_monitor_primary(fixed));
}