ShellWindowTracker: fix reference counting of ShellApp

All get_app_from_*() helpers are transfer full, but
get_app_from_gapplication_id() was directly returning the result
of lookup_app(), which is transfer none.

https://bugzilla.gnome.org/show_bug.cgi?id=721439
This commit is contained in:
Giovanni Campagna 2014-01-04 16:49:34 +01:00
parent a23c206ccb
commit 6544326ffd

View File

@ -256,6 +256,17 @@ get_app_from_window_wmclass (MetaWindow *window)
return NULL; return NULL;
} }
/**
* get_app_from_gapplication_id:
* @monitor: a #ShellWindowTracker
* @window: a #MetaWindow
*
* Looks only at the given window, and attempts to determine
* an application based on _GTK_APPLICATION_ID. If one can't be determined,
* return %NULL.
*
* Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
*/
static ShellApp * static ShellApp *
get_app_from_gapplication_id (MetaWindow *window) get_app_from_gapplication_id (MetaWindow *window)
{ {
@ -268,10 +279,12 @@ get_app_from_gapplication_id (MetaWindow *window)
id = meta_window_get_gtk_application_id (window); id = meta_window_get_gtk_application_id (window);
if (!id) if (!id)
return FALSE; return NULL;
desktop_file = g_strconcat (id, ".desktop", NULL); desktop_file = g_strconcat (id, ".desktop", NULL);
app = shell_app_system_lookup_app (appsys, desktop_file); app = shell_app_system_lookup_app (appsys, desktop_file);
if (app)
g_object_ref (app);
g_free (desktop_file); g_free (desktop_file);
return app; return app;