summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/screen-private.h1
-rw-r--r--src/core/screen.c27
2 files changed, 14 insertions, 14 deletions
diff --git a/src/core/screen-private.h b/src/core/screen-private.h
index 0103c6ad..ee014ff2 100644
--- a/src/core/screen-private.h
+++ b/src/core/screen-private.h
@@ -115,6 +115,7 @@ struct _MetaScreen
#endif
#ifdef HAVE_COMPOSITE_EXTENSIONS
+ Atom wm_cm_atom;
Window wm_cm_selection_window;
guint32 wm_cm_timestamp;
#endif
diff --git a/src/core/screen.c b/src/core/screen.c
index 6c555126..66461d4a 100644
--- a/src/core/screen.c
+++ b/src/core/screen.c
@@ -485,6 +485,8 @@ meta_screen_new (MetaDisplay *display,
screen->wm_sn_timestamp = manager_timestamp;
#ifdef HAVE_COMPOSITE_EXTENSIONS
+ g_snprintf (buf, sizeof(buf), "_NET_WM_CM_S%d", screen->number);
+ screen->wm_cm_atom = XInternAtom (screen->display->xdisplay, buf, FALSE);
screen->wm_cm_selection_window = meta_create_offscreen_window (xdisplay,
xroot,
NoEventMask);
@@ -1508,7 +1510,7 @@ meta_screen_tile_preview_update_timeout (gpointer data)
MetaRectangle tile_rect;
meta_window_get_current_tile_area (window, &tile_rect);
- meta_tile_preview_show (screen->tile_preview, &tile_rect);
+ meta_tile_preview_show (screen->tile_preview, &tile_rect, screen);
}
else
meta_tile_preview_hide (screen->tile_preview);
@@ -2894,28 +2896,25 @@ meta_screen_set_compositor_data (MetaScreen *screen,
void
meta_screen_set_cm_selection (MetaScreen *screen)
{
- char selection[32];
- Atom a;
-
screen->wm_cm_timestamp = meta_display_get_current_time_roundtrip (
screen->display);
- g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number);
- meta_verbose ("Setting selection: %s\n", selection);
- a = XInternAtom (screen->display->xdisplay, selection, FALSE);
- XSetSelectionOwner (screen->display->xdisplay, a,
+ meta_verbose ("Setting selection for screen: %d\n", screen->number);
+ XSetSelectionOwner (screen->display->xdisplay, screen->wm_cm_atom,
screen->wm_cm_selection_window, screen->wm_cm_timestamp);
}
void
meta_screen_unset_cm_selection (MetaScreen *screen)
{
- char selection[32];
- Atom a;
-
- g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number);
- a = XInternAtom (screen->display->xdisplay, selection, FALSE);
- XSetSelectionOwner (screen->display->xdisplay, a,
+ XSetSelectionOwner (screen->display->xdisplay, screen->wm_cm_atom,
None, screen->wm_cm_timestamp);
}
+
+gboolean
+meta_screen_is_cm_selected (MetaScreen *screen)
+{
+ Window owner = XGetSelectionOwner (screen->display->xdisplay, screen->wm_cm_atom);
+ return owner != None;
+}
#endif /* HAVE_COMPOSITE_EXTENSIONS */