summaryrefslogtreecommitdiff
path: root/libwnck/application.c
diff options
context:
space:
mode:
Diffstat (limited to 'libwnck/application.c')
-rw-r--r--libwnck/application.c37
1 files changed, 11 insertions, 26 deletions
diff --git a/libwnck/application.c b/libwnck/application.c
index dc1e1c0..60aa764 100644
--- a/libwnck/application.c
+++ b/libwnck/application.c
@@ -50,8 +50,6 @@
#define FALLBACK_NAME _("Untitled application")
-static GHashTable *app_hash = NULL;
-
struct _WnckApplicationPrivate
{
Window xwindow; /* group leader */
@@ -97,16 +95,6 @@ static void wnck_application_finalize (GObject *object);
static guint signals[LAST_SIGNAL] = { 0 };
-void
-_wnck_application_shutdown_all (void)
-{
- if (app_hash != NULL)
- {
- g_hash_table_destroy (app_hash);
- app_hash = NULL;
- }
-}
-
static void
wnck_application_init (WnckApplication *application)
{
@@ -204,10 +192,7 @@ wnck_application_finalize (GObject *object)
WnckApplication*
wnck_application_get (gulong xwindow)
{
- if (app_hash == NULL)
- return NULL;
- else
- return g_hash_table_lookup (app_hash, &xwindow);
+ return wnck_handle_get_application (_wnck_get_handle (), xwindow);
}
/**
@@ -518,15 +503,12 @@ WnckApplication*
_wnck_application_create (Window xwindow,
WnckScreen *screen)
{
+ WnckHandle *handle;
WnckApplication *application;
Screen *xscreen;
- if (app_hash == NULL)
- app_hash = g_hash_table_new_full (_wnck_xid_hash, _wnck_xid_equal,
- NULL, g_object_unref);
-
- g_return_val_if_fail (g_hash_table_lookup (app_hash, &xwindow) == NULL,
- NULL);
+ handle = wnck_screen_get_handle (screen);
+ g_return_val_if_fail (wnck_handle_get_application (handle, xwindow) == NULL, NULL);
xscreen = WNCK_SCREEN_XSCREEN (screen);
@@ -549,7 +531,7 @@ _wnck_application_create (Window xwindow,
application->priv->xwindow,
_wnck_atom_get ("_NET_STARTUP_ID"));
- g_hash_table_insert (app_hash, &application->priv->xwindow, application);
+ wnck_handle_insert_application (handle, &application->priv->xwindow, application);
/* Hash now owns one ref, caller gets none */
@@ -567,15 +549,18 @@ _wnck_application_create (Window xwindow,
void
_wnck_application_destroy (WnckApplication *application)
{
+ WnckHandle *handle;
Window xwindow = application->priv->xwindow;
- g_return_if_fail (wnck_application_get (xwindow) == application);
+ handle = wnck_screen_get_handle (application->priv->screen);
+
+ g_return_if_fail (wnck_handle_get_application (handle, xwindow) == application);
- g_hash_table_remove (app_hash, &xwindow);
+ wnck_handle_remove_application (handle, &xwindow);
/* Removing from hash also removes the only ref WnckApplication had */
- g_return_if_fail (wnck_application_get (xwindow) == NULL);
+ g_return_if_fail (wnck_handle_get_application (handle, xwindow) == NULL);
}
static void