36 static pthread_mutex_t
error_mutex = PTHREAD_MUTEX_INITIALIZER;
43 g_return_val_if_fail (i,
FALSE);
48 current_interface = i;
54 g_return_if_fail (current_interface);
57 current_interface->cleanup ();
59 current_interface =
NULL;
64 g_return_if_fail (current_interface);
69 current_interface->
show (show);
74 g_return_val_if_fail (current_interface,
FALSE);
77 return current_interface->
is_shown ();
83 g_return_val_if_fail (current_interface,
FALSE);
95 while ((message = g_queue_pop_head (&
error_queue)))
99 if (current_interface &&
PLUGIN_HAS_FUNC (current_interface, show_error))
102 fprintf (stderr,
"ERROR: %s\n", message);
119 g_queue_push_tail (&
error_queue, g_strdup (message));
134 g_return_if_fail (current_interface);
142 g_return_if_fail (current_interface);
157 g_return_if_fail (current_interface);
163 GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
165 gtk_window_set_default_size ((GtkWindow *) window, 300, 200);
166 gtk_window_set_has_resize_grip ((GtkWindow *) window,
FALSE);
167 gtk_container_add ((GtkContainer *) window, widget);
168 g_signal_connect (window,
"delete-event", (GCallback)
delete_cb, plugin);
169 gtk_widget_show_all (window);
175 g_return_if_fail (current_interface);
180 gtk_widget_destroy (gtk_widget_get_parent (widget));
185 g_return_if_fail (current_interface);
190 g_object_ref (widget);
195 g_return_if_fail (current_interface);
200 g_object_unref (widget);
227 if (current_plugin !=
NULL)
229 if (
get_bool (
NULL,
"show_interface") && current_interface &&
233 AUDDBG (
"Unloading plugin widgets.\n");
236 AUDDBG (
"Unloading visualizers.\n");
242 current_plugin =
NULL;
254 AUDDBG (
"Loading visualizers.\n");
257 AUDDBG (
"Loading plugin widgets.\n");
260 if (
get_bool (
NULL,
"show_interface") && current_interface &&
static bool_t error_idle_func(void *unused)
bool_t interface_is_shown(void)
void general_cleanup(void)
void(* show_filebrowser)(bool_t play_button)
void interface_show_filebrowser(bool_t play_button)
void interface_add_plugin_widget(PluginHandle *plugin, GtkWidget *widget)
void(* stop_gtk_plugin)(void *widget)
PluginHandle * iface_plugin_probe(void)
static GQueue error_queue
void interface_remove_plugin_widget(PluginHandle *plugin, GtkWidget *widget)
#define PLUGIN_HAS_FUNC(p, func)
void set_bool(const char *section, const char *name, bool_t value)
bool_t(* is_focused)(void)
const void * plugin_get_header(PluginHandle *plugin)
void(* show_jump_to_track)(void)
void(* uninstall_toolbar)(void *button)
bool_t interface_is_focused(void)
void interface_unload(void)
bool_t(* PluginForEachFunc)(PluginHandle *plugin, void *data)
void(* install_toolbar)(void *button)
bool_t get_bool(const char *section, const char *name)
void interface_uninstall_toolbar(void *widget)
bool_t plugin_enable(PluginHandle *plugin, bool_t enable)
void(* run_gtk_plugin)(void *widget, const char *name)
void interface_show_jump_to_track(void)
static bool_t delete_cb(GtkWidget *window, GdkEvent *event, PluginHandle *plugin)
static PluginHandle * current_plugin
bool_t interface_load(PluginHandle *plugin)
PLUGIN_COMMON_FIELDS void(* show)(bool_t show)
static IfacePlugin * current_interface
EXPORT void hook_call(const char *name, void *data)
static pthread_mutex_t error_mutex
static bool_t probe_cb(PluginHandle *p, PluginHandle **pp)
bool_t iface_plugin_set_current(PluginHandle *plugin)
void interface_install_toolbar(void *widget)
void data PluginHandle plugin
void interface_show_error(const char *message)
void plugin_for_each(int type, PluginForEachFunc func, void *data)
PluginHandle * iface_plugin_get_current(void)
const char * plugin_get_name(PluginHandle *plugin)
void interface_show(bool_t show)
void(* show_error)(const char *markup)