void ol_scroll_module_free (struct OlDisplayModule *module) { ol_assert (module != NULL); OlScrollModule *priv = ol_display_module_get_data (module); ol_assert (priv != NULL); if (_config_is_setting) return; if (module == NULL) return; if (priv->scroll != NULL) { gtk_widget_destroy (GTK_WIDGET (priv->scroll)); priv->scroll = NULL; } if (priv->message_timer > 0) g_source_remove (priv->message_timer); if (priv->player != NULL) { g_signal_handlers_disconnect_by_func (priv->player, _metadata_changed_cb, priv); g_signal_handlers_disconnect_by_func (priv->player, _caps_changed_cb, priv); g_object_unref (priv->player); priv->player = NULL; } if (priv->metadata != NULL) { ol_metadata_free (priv->metadata); priv->metadata = NULL; } if (priv->lrc) { g_object_unref (priv->lrc); priv->lrc = NULL; } while (priv->config_bindings != NULL) { _unbind_config (priv->config_bindings->data); priv->config_bindings = g_list_delete_link (priv->config_bindings, priv->config_bindings); } g_free (priv); }
static void ol_osd_module_free (struct OlDisplayModule *module) { ol_log_func (); ol_assert (module != NULL); OlOsdModule *priv = ol_display_module_get_data (module); ol_assert (priv != NULL); if (priv->lrc) { g_object_unref (priv->lrc); priv->lrc = NULL; } if (priv->toolbar) { g_object_unref (priv->toolbar); priv->toolbar = NULL; } if (priv->window != NULL) { gtk_widget_destroy (GTK_WIDGET (priv->window)); priv->window = NULL; } if (priv->message_source > 0) { g_source_remove (priv->message_source); priv->message_source = 0; } if (priv->metadata != NULL) { ol_metadata_free (priv->metadata); priv->metadata = NULL; } g_signal_handlers_disconnect_by_func (priv->player, _metadata_changed_cb, priv); g_object_unref (priv->player); priv->player = NULL; while (priv->config_bindings != NULL) { _unbind_config (priv->config_bindings->data); priv->config_bindings = g_list_delete_link (priv->config_bindings, priv->config_bindings); } g_free (priv); }