Author: post
Date: 2010-03-23 21:40:16 +0100 (Tue, 23 Mar 2010)
New Revision: 3264
Modified:
trunk/plugins/dcp/dcp.c
trunk/plugins/dcp/dcp.h
trunk/plugins/denoise/denoise.c
Log:
Properly disconnect "setting-changed" property to avoid crash when adjusting
image after using "Export As".
Modified: trunk/plugins/dcp/dcp.c
===================================================================
--- trunk/plugins/dcp/dcp.c 2010-03-21 20:24:06 UTC (rev 3263)
+++ trunk/plugins/dcp/dcp.c 2010-03-23 20:40:16 UTC (rev 3264)
@@ -62,6 +62,11 @@
g_free(dcp->_looktable_precalc_unaligned);
free_dcp_profile(dcp);
+
+ if (dcp->settings_signal_id)
+ g_signal_handler_disconnect(dcp->settings,
dcp->settings_signal_id);
+ dcp->settings_signal_id = 0;
+ dcp->settings = NULL;
}
static void
@@ -335,14 +340,15 @@
{
RSDcp *dcp = RS_DCP(object);
RSFilter *filter = RS_FILTER(dcp);
- RSSettings *settings;
switch (property_id)
{
case PROP_SETTINGS:
- settings = g_value_get_object(value);
- g_signal_connect(settings, "settings-changed",
G_CALLBACK(settings_changed), dcp);
- settings_changed(settings, MASK_ALL, dcp);
+ if (dcp->settings && dcp->settings_signal_id)
+ g_signal_handler_disconnect(dcp->settings,
dcp->settings_signal_id);
+ dcp->settings = g_value_get_object(value);
+ dcp->settings_signal_id =
g_signal_connect(dcp->settings, "settings-changed",
G_CALLBACK(settings_changed), dcp);
+ settings_changed(dcp->settings, MASK_ALL, dcp);
break;
case PROP_PROFILE:
read_profile(dcp, g_value_get_object(value));
Modified: trunk/plugins/dcp/dcp.h
===================================================================
--- trunk/plugins/dcp/dcp.h 2010-03-21 20:24:06 UTC (rev 3263)
+++ trunk/plugins/dcp/dcp.h 2010-03-23 20:40:16 UTC (rev 3264)
@@ -46,6 +46,8 @@
struct _RSDcp {
RSFilter parent;
+ gulong settings_signal_id;
+ RSSettings *settings;
gfloat exposure;
gfloat saturation;
Modified: trunk/plugins/denoise/denoise.c
===================================================================
--- trunk/plugins/denoise/denoise.c 2010-03-21 20:24:06 UTC (rev 3263)
+++ trunk/plugins/denoise/denoise.c 2010-03-23 20:40:16 UTC (rev 3264)
@@ -77,6 +77,10 @@
{
RSDenoise *denoise = RS_DENOISE(object);
destroyDenoiser(&denoise->info);
+ if (denoise->settings && denoise->settings_signal_id)
+ g_signal_handler_disconnect(denoise->settings,
denoise->settings_signal_id);
+ denoise->settings_signal_id = 0;
+ denoise->settings = NULL;
}
static void
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit