diff options
Diffstat (limited to 'libwnck/screen.c')
-rw-r--r-- | libwnck/screen.c | 113 |
1 files changed, 16 insertions, 97 deletions
diff --git a/libwnck/screen.c b/libwnck/screen.c index 473c3fc..094f23e 100644 --- a/libwnck/screen.c +++ b/libwnck/screen.c @@ -65,8 +65,6 @@ #define _NET_WM_BOTTOMRIGHT 2 #define _NET_WM_BOTTOMLEFT 3 -static WnckScreen** screens = NULL; - struct _WnckScreenPrivate { WnckHandle *handle; @@ -500,8 +498,6 @@ wnck_screen_finalize (GObject *object) g_free (screen->priv->wm_name); screen->priv->wm_name = NULL; - screens[screen->priv->number] = NULL; - #ifdef HAVE_STARTUP_NOTIFICATION sn_display_unref (screen->priv->sn_display); screen->priv->sn_display = NULL; @@ -526,12 +522,13 @@ sn_error_trap_pop (SnDisplay *display, } #endif /* HAVE_STARTUP_NOTIFICATION */ -static void -wnck_screen_construct (Display *display, - WnckScreen *screen, - int number) +void +_wnck_screen_construct (WnckScreen *screen, + WnckHandle *handle, + Display *display, + int number) { - screen->priv->handle = _wnck_get_handle (); + screen->priv->handle = handle; /* Create the initial state of the screen. */ screen->priv->xroot = RootWindow (display, number); @@ -578,44 +575,7 @@ wnck_screen_construct (Display *display, WnckScreen* wnck_screen_get (int index) { - Display *display; - - display = _wnck_get_default_display (); - - g_return_val_if_fail (display != NULL, NULL); - - if (index >= ScreenCount (display)) - return NULL; - - if (screens == NULL) - { - screens = g_new0 (WnckScreen*, ScreenCount (display)); - } - - if (screens[index] == NULL) - { - screens[index] = g_object_new (WNCK_TYPE_SCREEN, NULL); - - wnck_screen_construct (display, screens[index], index); - } - - return screens[index]; -} - -WnckScreen* -_wnck_screen_get_existing (int number) -{ - Display *display; - - display = _wnck_get_default_display (); - - g_return_val_if_fail (display != NULL, NULL); - g_return_val_if_fail (number < ScreenCount (display), NULL); - - if (screens != NULL) - return screens[number]; - else - return NULL; + return _wnck_handle_get_screen (_wnck_get_handle (), index); } /** @@ -630,15 +590,7 @@ _wnck_screen_get_existing (int number) WnckScreen* wnck_screen_get_default (void) { - int default_screen; - Display *default_display = _wnck_get_default_display (); - - if (default_display == NULL) - return NULL; - - default_screen = DefaultScreen (default_display); - - return wnck_screen_get (default_screen); + return _wnck_handle_get_default_screen (_wnck_get_handle ()); } /** @@ -658,24 +610,8 @@ wnck_screen_get_default (void) WnckScreen* wnck_screen_get_for_root (gulong root_window_id) { - int i; - Display *display; - - if (screens == NULL) - return NULL; - - i = 0; - display = _wnck_get_default_display (); - - while (i < ScreenCount (display)) - { - if (screens[i] != NULL && screens[i]->priv->xroot == root_window_id) - return screens[i]; - - ++i; - } - - return NULL; + return _wnck_handle_get_screen_for_root (_wnck_get_handle (), + root_window_id); } WnckHandle * @@ -2494,6 +2430,12 @@ wnck_screen_get_height (WnckScreen *screen) return HeightOfScreen (screen->priv->xscreen); } +Window +_wnck_screen_get_xroot (WnckScreen *screen) +{ + return screen->priv->xroot; +} + Screen * _wnck_screen_get_xscreen (WnckScreen *screen) { @@ -2724,26 +2666,3 @@ _wnck_screen_change_workspace_name (WnckScreen *screen, g_free (names); } - -void -_wnck_screen_shutdown_all (void) -{ - int i; - Display *display; - - if (screens == NULL) - return; - - display = _wnck_get_default_display (); - - for (i = 0; i < ScreenCount (display); ++i) - { - if (screens[i] != NULL) { - g_object_unref (screens[i]); - screens[i] = NULL; - } - } - - g_free (screens); - screens = NULL; -} |