summaryrefslogtreecommitdiff
path: root/src/screen.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-11-21 02:32:05 +0000
committerHavoc Pennington <hp@src.gnome.org>2003-11-21 02:32:05 +0000
commitd538690bd497ad86fdeeb61154402a3aa0ef9e9b (patch)
treed0f1964d74ec9eeb48072299681a54080324fc42 /src/screen.c
parent24d86551883b33984bcd4dd9bcbba4f377fe7d05 (diff)
downloadmetacity-d538690bd497ad86fdeeb61154402a3aa0ef9e9b.tar.gz
new function
2003-11-20 Havoc Pennington <hp@redhat.com> * src/window.c (meta_window_new_with_attrs): new function * src/display.c, src/screen.c: create the compositor and feed windows and events to it
Diffstat (limited to 'src/screen.c')
-rw-r--r--src/screen.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/screen.c b/src/screen.c
index fdc31736..d8d5defd 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -34,6 +34,7 @@
#include "keybindings.h"
#include "stack.h"
#include "xprops.h"
+#include "compositor.h"
#ifdef HAVE_SOLARIS_XINERAMA
#include <X11/extensions/xinerama.h>
@@ -654,9 +655,12 @@ meta_screen_new (MetaDisplay *display,
if (space != NULL)
meta_workspace_activate (space);
}
+
+ meta_compositor_manage_screen (screen->display->compositor,
+ screen);
meta_verbose ("Added screen %d ('%s') root 0x%lx\n",
- screen->number, screen->screen_name, screen->xroot);
+ screen->number, screen->screen_name, screen->xroot);
return screen;
}
@@ -672,6 +676,9 @@ meta_screen_free (MetaScreen *screen)
meta_display_grab (display);
+ meta_compositor_unmanage_screen (screen->display->compositor,
+ screen);
+
meta_display_unmanage_windows_for_screen (display, screen);
meta_prefs_remove_listener (prefs_changed_callback, screen);
@@ -749,7 +756,27 @@ meta_screen_manage_all_windows (MetaScreen *screen)
i = 0;
while (i < n_children)
{
- meta_window_new (screen->display, children[i], TRUE);
+ XWindowAttributes attrs;
+
+ meta_error_trap_push_with_return (screen->display);
+
+ XGetWindowAttributes (screen->display->xdisplay,
+ children[i], &attrs);
+
+ if (meta_error_trap_pop_with_return (screen->display, TRUE) != Success)
+ {
+ meta_verbose ("Failed to get attributes for window 0x%lx\n",
+ children[i]);
+ }
+ else
+ {
+ meta_window_new_with_attrs (screen->display, children[i], TRUE,
+ &attrs);
+
+ if (attrs.map_state == IsViewable)
+ meta_compositor_add_window (screen->display->compositor,
+ children[i], &attrs);
+ }
++i;
}