+void
+Source::inc_use_count ()
+{
+ g_atomic_int_inc (&_use_count);
+}
+
+void
+Source::dec_use_count ()
+{
+#ifndef NDEBUG
+ gint oldval = g_atomic_int_add (&_use_count, -1);
+ if (oldval <= 0) {
+ cerr << "Bad use dec for " << name() << endl;
+ abort ();
+ }
+ assert (oldval > 0);
+#else
+ g_atomic_int_add (&_use_count, -1);
+#endif
+}
+
+bool
+Source::writable () const
+{
+ return (_flags & Writable) && _session.writable();
+}
+