static void mex_search_plugin_dispose (GObject *object) { MexSearchPlugin *self = MEX_SEARCH_PLUGIN (object); MexSearchPluginPrivate *priv = self->priv; if (priv->model_info) { mex_model_info_free (priv->model_info); priv->model_info = NULL; } if (priv->suggest_model) { g_object_unref (priv->suggest_model); priv->suggest_model = NULL; } if (priv->suggest_timeout) { g_source_remove (priv->suggest_timeout); priv->suggest_timeout = 0; } if (priv->suggest_id) { MexDownloadQueue *dq = mex_download_queue_get_default (); mex_download_queue_cancel (dq, priv->suggest_id); priv->suggest_id = NULL; } if (priv->search_proxy) { g_object_unref (priv->search_proxy); priv->search_proxy = NULL; } if (priv->search_page) { g_object_unref (priv->search_page); priv->search_page = NULL; } if (priv->action_info.action) { g_object_unref (priv->action_info.action); priv->action_info.action = NULL; } G_OBJECT_CLASS (mex_search_plugin_parent_class)->dispose (object); }
static void mex_library_plugin_dispose (GObject *object) { MexLibraryPluginPrivate *priv = MEX_LIBRARY_PLUGIN (object)->priv; while (priv->models) { MexModelInfo *info = priv->models->data; mex_model_info_free (info); priv->models = g_list_delete_link (priv->models, priv->models); } G_OBJECT_CLASS (mex_library_plugin_parent_class)->dispose (object); }
static void mex_queue_plugin_dispose (GObject *object) { MexQueuePluginPrivate *priv = GET_PRIVATE (object); while (priv->models) { mex_model_info_free (priv->models->data); priv->models = g_list_delete_link (priv->models, priv->models); } while (priv->actions) { MexActionInfo *info = priv->actions->data; g_object_unref (info->action); g_strfreev (info->mime_types); g_free (info); priv->actions = g_list_delete_link (priv->actions, priv->actions); } G_OBJECT_CLASS (mex_queue_plugin_parent_class)->dispose (object); }
static void mex_search_plugin_search_cb (MexSearchPlugin *self) { MexModelInfo *info; MexSearchPluginPrivate *priv = self->priv; const gchar *search = mx_entry_get_text (MX_ENTRY (priv->search_entry)); /* Stop the suggestions search */ if (priv->suggest_timeout) { g_source_remove (priv->suggest_timeout); priv->suggest_timeout = 0; } /* Start a new search */ mex_search_plugin_search (self, search); /* Update the history list */ mex_search_plugin_update_history (self, search); /* Present the search model */ info = mex_model_info_new_with_sort_funcs (priv->search_model, "search-results", 0); mex_model_provider_present_model (MEX_MODEL_PROVIDER (self), info); mex_model_info_free (info); /* Hide the search page, if it was visible */ if (CLUTTER_ACTOR_IS_VISIBLE (priv->search_page)) mex_tool_provider_remove_actor (MEX_TOOL_PROVIDER (self), priv->search_page); /* TODO: Maybe use weak references to stop the search if the application * didn't use it? */ }