diff options
author | Havoc Pennington <hp@redhat.com> | 2003-11-21 02:32:05 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2003-11-21 02:32:05 +0000 |
commit | d538690bd497ad86fdeeb61154402a3aa0ef9e9b (patch) | |
tree | d0f1964d74ec9eeb48072299681a54080324fc42 /src/screen.c | |
parent | 24d86551883b33984bcd4dd9bcbba4f377fe7d05 (diff) | |
download | metacity-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.c | 31 |
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; } |