Author: abrander
Date: 2009-07-05 01:26:28 +0200 (Sun, 05 Jul 2009)
New Revision: 2544
Modified:
trunk/plugins/basic-render/basic-render.c
Log:
Made sure to disconnect from old signal handlers in RSBasicRender.
Modified: trunk/plugins/basic-render/basic-render.c
===================================================================
--- trunk/plugins/basic-render/basic-render.c 2009-07-04 22:53:50 UTC (rev
2543)
+++ trunk/plugins/basic-render/basic-render.c 2009-07-04 23:26:28 UTC (rev
2544)
@@ -44,6 +44,7 @@
gboolean dirty_lcms;
RSSettings *settings;
+ gulong settings_signal_id;
gfloat gamma;
@@ -250,7 +251,6 @@
static void
set_property(GObject *object, guint property_id, const GValue *value,
GParamSpec *pspec)
{
- RSSettings *settings;
RSBasicRender *basic_render = RS_BASIC_RENDER(object);
switch (property_id)
@@ -261,13 +261,15 @@
rs_filter_changed(RS_FILTER(object),
RS_FILTER_CHANGED_PIXELDATA);
break;
case PROP_SETTINGS:
- settings = g_value_get_object(value);
- g_signal_connect(settings, "settings-changed",
G_CALLBACK(settings_changed), basic_render);
+ if (basic_render->settings &&
basic_render->settings_signal_id)
+
g_signal_handler_disconnect(basic_render->settings,
basic_render->settings_signal_id);
+ basic_render->settings = g_value_get_object(value);
+ basic_render->settings_signal_id =
g_signal_connect(basic_render->settings, "settings-changed",
G_CALLBACK(settings_changed), basic_render);
/* FIXME: Quick hack to force updating RSBasicRender
before RSSettings
* sends a "settings-changed"-signal. Should be
replaced by some
* dirty_settings mechanics. */
- settings_changed(settings, MASK_ALL, basic_render);
+ settings_changed(basic_render->settings, MASK_ALL,
basic_render);
// g_object_unref(settings);
rs_filter_changed(RS_FILTER(object),
RS_FILTER_CHANGED_PIXELDATA);
break;
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit