summaryrefslogtreecommitdiff
path: root/libwnck/screen.c
diff options
context:
space:
mode:
Diffstat (limited to 'libwnck/screen.c')
-rw-r--r--libwnck/screen.c113
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;
-}