summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-03-23 21:55:36 +0100
committerLennart Poettering <lennart@poettering.net>2009-03-23 21:55:36 +0100
commitac5ac9e486aa33f7be0cd9ddd315c03780676795 (patch)
tree6e43231c662e839b574455936ec8895def93bc11
parent212bafd6109eb01654065527a8dd55206ecaf535 (diff)
don't crash if there is no default display on initialization. Fixes #20693
-rw-r--r--src/canberra-gtk-module.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/canberra-gtk-module.c b/src/canberra-gtk-module.c
index b9d8ae0..302eeb4 100644
--- a/src/canberra-gtk-module.c
+++ b/src/canberra-gtk-module.c
@@ -647,11 +647,15 @@ static gboolean idle_cb(void *userdata) {
return FALSE;
}
+static void connect_settings(void);
+
static gboolean emission_hook_cb(GSignalInvocationHint *hint, guint n_param_values, const GValue *param_values, gpointer data) {
static SoundEventData *d = NULL;
GdkEvent *e;
GObject *object;
+ connect_settings();
+
if (disabled)
return TRUE;
@@ -719,15 +723,15 @@ static void enable_input_feedback_sounds_changed(GtkSettings *s, GParamSpec *arg
read_enable_input_feedback_sounds(s);
}
-G_MODULE_EXPORT void gtk_module_init(gint *argc, gchar ***argv[]) {
+static void connect_settings(void) {
GtkSettings *s;
+ static gboolean connected = FALSE;
- /* This is the same quark libgnomeui uses! */
- disable_sound_quark = g_quark_from_string("gnome_disable_sound_events");
- was_hidden_quark = g_quark_from_string("canberra_was_hidden");
+ if (connected)
+ return;
- /* Hook up the gtk setting */
- s = gtk_settings_get_default();
+ if (!(s = gtk_settings_get_default()))
+ return;
if (g_object_class_find_property(G_OBJECT_GET_CLASS(s), "gtk-enable-input-feedback-sounds")) {
g_signal_connect(G_OBJECT(s), "notify::gtk-enable-input-feedback-sounds", G_CALLBACK(enable_input_feedback_sounds_changed), NULL);
@@ -735,6 +739,18 @@ G_MODULE_EXPORT void gtk_module_init(gint *argc, gchar ***argv[]) {
} else
g_debug("This Gtk+ version doesn't have the GtkSettings::gtk-enable-input-feedback-sounds property.");
+ connected = TRUE;
+}
+
+G_MODULE_EXPORT void gtk_module_init(gint *argc, gchar ***argv[]) {
+
+ /* This is the same quark libgnomeui uses! */
+ disable_sound_quark = g_quark_from_string("gnome_disable_sound_events");
+ was_hidden_quark = g_quark_from_string("canberra_was_hidden");
+
+ /* Hook up the gtk setting */
+ connect_settings();
+
install_hook(GTK_TYPE_WINDOW, "show", &signal_id_widget_show);
install_hook(GTK_TYPE_WINDOW, "hide", &signal_id_widget_hide);
install_hook(GTK_TYPE_DIALOG, "response", &signal_id_dialog_response);
@@ -749,7 +765,6 @@ G_MODULE_EXPORT void gtk_module_init(gint *argc, gchar ***argv[]) {
install_hook(GTK_TYPE_ICON_VIEW, "selection-changed", &signal_id_icon_view_selection_changed);
}
-
G_MODULE_EXPORT gchar* g_module_check_init(GModule *module);
G_MODULE_EXPORT gchar* g_module_check_init(GModule *module) {