diff options
Diffstat (limited to 'libwnck/application.c')
-rw-r--r-- | libwnck/application.c | 37 |
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 |