Author: abrander
Date: 2009-07-04 16:15:12 +0200 (Sat, 04 Jul 2009)
New Revision: 2527
Modified:
trunk/librawstudio/rs-filter.c
Log:
Do ref/unref of bound filters.
Modified: trunk/librawstudio/rs-filter.c
===================================================================
--- trunk/librawstudio/rs-filter.c 2009-07-04 12:50:22 UTC (rev 2526)
+++ trunk/librawstudio/rs-filter.c 2009-07-04 14:15:12 UTC (rev 2527)
@@ -93,6 +93,15 @@
return filter;
}
+static void
+rs_filter_weak_unlink(gpointer data, GObject *where_the_object_was)
+{
+ RSFilter *filter = RS_FILTER(data);
+ RSFilter *next = RS_FILTER(where_the_object_was);
+
+ filter->next_filters = g_slist_remove(filter->next_filters, next);
+}
+
/**
* Set the previous RSFilter in a RSFilter-chain
* @param filter A RSFilter
@@ -106,10 +115,15 @@
g_assert(RS_IS_FILTER(previous));
if (filter->previous && (filter->previous != previous))
+ {
+ g_object_weak_unref(G_OBJECT(filter), rs_filter_weak_unlink,
previous);
filter->previous->next_filters =
g_slist_remove(filter->previous->next_filters, filter);
+ }
filter->previous = previous;
previous->next_filters = g_slist_append(previous->next_filters, filter);
+
+ g_object_weak_ref(G_OBJECT(filter), rs_filter_weak_unlink, previous);
}
/**
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit