[beast: 2/9] BST: adjust to use Bse.Source.has_output(s)
- From: Tim Janik <timj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [beast: 2/9] BST: adjust to use Bse.Source.has_output(s)
- Date: Wed, 16 Aug 2017 23:43:00 +0000 (UTC)
commit ccba7bfc1afcded239abf127f9368beb1ac77b2d
Author: Tim Janik <timj gnu org>
Date: Sun Jul 23 21:02:35 2017 +0200
BST: adjust to use Bse.Source.has_output(s)
Signed-off-by: Tim Janik <timj gnu org>
beast-gtk/bstscrollgraph.cc | 41 +++++++++++++++++++----------------------
beast-gtk/bstscrollgraph.hh | 10 +++-------
beast-gtk/bstsnetrouter.cc | 10 ++++------
beast-gtk/bstsnifferscope.cc | 35 ++++++++++++++++++-----------------
beast-gtk/bstsnifferscope.hh | 15 +++++++--------
beast-gtk/bsttrackroll.cc | 2 +-
6 files changed, 52 insertions(+), 61 deletions(-)
---
diff --git a/beast-gtk/bstscrollgraph.cc b/beast-gtk/bstscrollgraph.cc
index 62a9e0a..80d7fa7 100644
--- a/beast-gtk/bstscrollgraph.cc
+++ b/beast-gtk/bstscrollgraph.cc
@@ -32,7 +32,7 @@ static void
bst_scrollgraph_destroy (GtkObject *object)
{
BstScrollgraph *self = BST_SCROLLGRAPH (object);
- bst_scrollgraph_set_source (self, 0, 0);
+ bst_scrollgraph_set_source (self, Bse::SourceH(), 0);
/* chain parent class' handler */
GTK_OBJECT_CLASS (bst_scrollgraph_parent_class)->destroy (object);
}
@@ -45,6 +45,8 @@ bst_scrollgraph_finalize (GObject *object)
self->values = NULL;
/* chain parent class' handler */
G_OBJECT_CLASS (bst_scrollgraph_parent_class)->finalize (object);
+ using namespace Bse;
+ self->source.~SourceH();
}
static void
@@ -423,8 +425,8 @@ bst_scrollgraph_probes_notify (SfiProxy source,
bst_scrollgraph_draw_bar (self, 0);
}
bse_probe_seq_free (pseq);
- float mix_freq = bse_source_get_mix_freq (self->source);
- bst_source_queue_probe_request (self->source, self->ochannel, BST_SOURCE_PROBE_FFT, mix_freq /
self->window_size);
+ float mix_freq = bse_source_get_mix_freq (self->source.proxy_id());
+ bst_source_queue_probe_request (self->source.proxy_id(), self->ochannel, BST_SOURCE_PROBE_FFT, mix_freq /
self->window_size);
}
static void
@@ -432,7 +434,7 @@ bst_scrollgraph_io_changed (BstScrollgraph *self)
{
if (self->canvas)
{
- if (self->source && bse_source_has_output (self->source, self->ochannel))
+ if (self->source && self->source.has_output (self->ochannel))
gdk_window_show (self->canvas);
else
gdk_window_hide (self->canvas);
@@ -443,23 +445,19 @@ static void
bst_scrollgraph_release_item (SfiProxy item,
BstScrollgraph *self)
{
- assert_return (self->source == item);
- bst_scrollgraph_set_source (self, 0, 0);
+ assert_return (self->source.proxy_id() == item);
+ bst_scrollgraph_set_source (self, Bse::SourceH(), 0);
if (self->delete_toplevel)
gxk_toplevel_delete (GTK_WIDGET (self));
}
void
-bst_scrollgraph_set_source (BstScrollgraph *self,
- SfiProxy source,
- guint ochannel)
+bst_scrollgraph_set_source (BstScrollgraph *self, Bse::SourceH source, uint ochannel)
{
assert_return (BST_IS_SCROLLGRAPH (self));
- if (source)
- assert_return (BSE_IS_SOURCE (source));
if (self->source)
{
- bse_proxy_disconnect (self->source,
+ bse_proxy_disconnect (self->source.proxy_id(),
"any-signal", bst_scrollgraph_release_item, self,
"any-signal", bst_scrollgraph_probes_notify, self,
"any-signal", bst_scrollgraph_io_changed, self,
@@ -470,13 +468,13 @@ bst_scrollgraph_set_source (BstScrollgraph *self,
if (self->source)
{
/* setup scope */
- bse_proxy_connect (self->source,
+ bse_proxy_connect (self->source.proxy_id(),
"signal::release", bst_scrollgraph_release_item, self,
"signal::probes", bst_scrollgraph_probes_notify, self,
"swapped-signal::io_changed", bst_scrollgraph_io_changed, self,
NULL);
- float mix_freq = bse_source_get_mix_freq (self->source);
- bst_source_queue_probe_request (self->source, self->ochannel, BST_SOURCE_PROBE_FFT, mix_freq /
self->window_size);
+ float mix_freq = bse_source_get_mix_freq (self->source.proxy_id());
+ bst_source_queue_probe_request (self->source.proxy_id(), self->ochannel, BST_SOURCE_PROBE_FFT,
mix_freq / self->window_size);
bst_scrollgraph_io_changed (self);
}
}
@@ -508,6 +506,7 @@ bst_scrollgraph_button_release (GtkWidget *widget,
static void
bst_scrollgraph_init (BstScrollgraph *self)
{
+ new (&self->source) Bse::SourceH();
GtkWidget *widget = GTK_WIDGET (self);
GTK_WIDGET_UNSET_FLAGS (self, GTK_NO_WINDOW);
gtk_widget_set_double_buffered (widget, FALSE);
@@ -584,7 +583,7 @@ scrollgraph_resize_rulers (BstScrollgraph *self, Bst::Direction direction, gpoin
GtkWidget *widget = GTK_WIDGET (self);
GtkWidget *hruler = (GtkWidget*) g_object_get_data ((GObject*) self, "BstScrollgraph-hruler");
GtkWidget *vruler = (GtkWidget*) g_object_get_data ((GObject*) self, "BstScrollgraph-vruler");
- if (self->source)
+ if (self->source.proxy_id())
{
gdouble secs = self->window_size / (gdouble) self->mix_freq;
if (HORIZONTAL (self))
@@ -635,11 +634,9 @@ scrollgraph_resize_alignment (BstScrollgraph *self, Bst::Direction direction, gp
}
GtkWidget*
-bst_scrollgraph_build_dialog (GtkWidget *alive_object,
- SfiProxy source,
- guint ochannel)
+bst_scrollgraph_build_dialog (GtkWidget *alive_object, Bse::SourceH source, uint ochannel)
{
- assert_return (BSE_IS_SOURCE (source), NULL);
+ assert_return (source != NULL, NULL);
GxkRadget *radget = gxk_radget_create ("beast", "scrollgraph-dialog", NULL);
BstScrollgraph *scg = (BstScrollgraph*) gxk_radget_find (radget, "scrollgraph");
@@ -673,8 +670,8 @@ bst_scrollgraph_build_dialog (GtkWidget *alive_object,
g_signal_connect_object (scg, "resize-values", G_CALLBACK (scrollgraph_resize_alignment), alignment,
G_CONNECT_AFTER);
}
GtkWidget *dialog = (GtkWidget*) gxk_dialog_new (NULL, (GtkObject*) alive_object, GxkDialogFlags (0),
"Scrollgraph", (GtkWidget*) radget);
- gchar *title = g_strdup_format ("Spectrogram: %%s (%s)", bse_source_ochannel_label (source, ochannel));
- bst_window_sync_title_to_proxy (dialog, source, title);
+ gchar *title = g_strdup_format ("Spectrogram: %%s (%s)", bse_source_ochannel_label (source.proxy_id(),
ochannel));
+ bst_window_sync_title_to_proxy (dialog, source.proxy_id(), title);
g_free (title);
return dialog;
}
diff --git a/beast-gtk/bstscrollgraph.hh b/beast-gtk/bstscrollgraph.hh
index b34dca3..33605a5 100644
--- a/beast-gtk/bstscrollgraph.hh
+++ b/beast-gtk/bstscrollgraph.hh
@@ -30,7 +30,7 @@ struct _BstScrollgraph
gfloat *values; /* [n_points * n_bars] */
GdkPixbuf *pixbuf; /* n_points wide or high */
GdkWindow *canvas;
- SfiProxy source;
+ Bse::SourceH source;
guint ochannel;
};
struct _BstScrollgraphClass
@@ -42,11 +42,7 @@ struct _BstScrollgraphClass
/* --- public methods --- */
GType bst_scrollgraph_get_type (void);
void bst_scrollgraph_clear (BstScrollgraph *self);
-void bst_scrollgraph_set_source (BstScrollgraph *self,
- SfiProxy source,
- guint ochannel);
-GtkWidget* bst_scrollgraph_build_dialog (GtkWidget *alive_object,
- SfiProxy source,
- guint ochannel);
+void bst_scrollgraph_set_source (BstScrollgraph *self, Bse::SourceH source, uint ochannel);
+GtkWidget* bst_scrollgraph_build_dialog (GtkWidget *alive_object, Bse::SourceH source, uint
ochannel);
#endif /* __BST_SCROLLGRAPH_H__ */
diff --git a/beast-gtk/bstsnetrouter.cc b/beast-gtk/bstsnetrouter.cc
index b6d5997..d5fe64f 100644
--- a/beast-gtk/bstsnetrouter.cc
+++ b/beast-gtk/bstsnetrouter.cc
@@ -658,13 +658,14 @@ bst_snet_router_root_event (BstSNetRouter *self,
/* create popup */
for (int i = 0; has_inputs == 0 && i < bse_source_n_ichannels (csource->source); i++)
has_inputs += bse_source_ichannel_get_n_joints (csource->source, i);
+ Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy
(csource->source));
choice = bst_choice_menu_createv ("<BEAST-SNetRouter>/ModulePopup",
BST_CHOICE_TITLE (source_name),
BST_CHOICE_SEPERATOR,
BST_CHOICE (2, _("Properties"), PROPERTIES),
BST_CHOICE (6, _("Reset Properties"), PROPERTIES_RESET),
BST_CHOICE_S (3, _("Disconnect Inputs"), NO_ILINK,
has_inputs),
- BST_CHOICE_S (4, _("Disconnect Outputs"), NO_OLINK,
bse_source_has_outputs (csource->source)),
+ BST_CHOICE_S (4, _("Disconnect Outputs"), NO_OLINK,
csource_source.has_outputs()),
BST_CHOICE_SEPERATOR,
BST_CHOICE (5, _("Show Info"), INFO),
BST_CHOICE_SUBMENU (_("Output Signal Monitor"), choice,
SIGNAL),
@@ -693,15 +694,12 @@ bst_snet_router_root_event (BstSNetRouter *self,
bst_canvas_source_popup_info (csource);
break;
case 1:
- {
- Bse::SourceH source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
- error = self->snet.remove_source (source);
- }
+ error = self->snet.remove_source (csource_source);
bst_status_eprintf (error, _("Remove Module"));
break;
case 0: break;
default:
- dialog = bst_scrollgraph_build_dialog (GTK_WIDGET (self), csource->source, i -
monitor_ids);
+ dialog = bst_scrollgraph_build_dialog (GTK_WIDGET (self), csource_source, i - monitor_ids);
gtk_widget_show (dialog);
break;
}
diff --git a/beast-gtk/bstsnifferscope.cc b/beast-gtk/bstsnifferscope.cc
index d8bb787..6cc9037 100644
--- a/beast-gtk/bstsnifferscope.cc
+++ b/beast-gtk/bstsnifferscope.cc
@@ -14,6 +14,7 @@ G_DEFINE_TYPE (BstSnifferScope, bst_sniffer_scope, GTK_TYPE_WIDGET);
static void
bst_sniffer_scope_init (BstSnifferScope *self)
{
+ new (&self->source) Bse::SourceH();
GtkWidget *widget = GTK_WIDGET (self);
GTK_WIDGET_SET_FLAGS (self, GTK_NO_WINDOW);
@@ -32,7 +33,7 @@ bst_sniffer_scope_destroy (GtkObject *object)
{
BstSnifferScope *self = BST_SNIFFER_SCOPE (object);
- bst_sniffer_scope_set_sniffer (self, 0);
+ bst_sniffer_scope_set_sniffer (self);
GTK_OBJECT_CLASS (bst_sniffer_scope_parent_class)->destroy (object);
}
@@ -42,10 +43,12 @@ bst_sniffer_scope_finalize (GObject *object)
{
BstSnifferScope *self = BST_SNIFFER_SCOPE (object);
- bst_sniffer_scope_set_sniffer (self, 0);
+ bst_sniffer_scope_set_sniffer (self);
g_free (self->lvalues);
g_free (self->rvalues);
G_OBJECT_CLASS (bst_sniffer_scope_parent_class)->finalize (object);
+ using namespace Bse;
+ self->source.~SourceH();
}
static void
@@ -237,8 +240,8 @@ scope_probes_notify (SfiProxy proxy,
}
bse_probe_seq_free (pseq);
}
- bst_source_queue_probe_request (self->proxy, 0, BST_SOURCE_PROBE_RANGE, 20.0);
- bst_source_queue_probe_request (self->proxy, 1, BST_SOURCE_PROBE_RANGE, 20.0);
+ bst_source_queue_probe_request (self->source.proxy_id(), 0, BST_SOURCE_PROBE_RANGE, 20.0);
+ bst_source_queue_probe_request (self->source.proxy_id(), 1, BST_SOURCE_PROBE_RANGE, 20.0);
}
static void
@@ -260,29 +263,27 @@ bst_sniffer_scope_class_init (BstSnifferScopeClass *klass)
}
void
-bst_sniffer_scope_set_sniffer (BstSnifferScope *self,
- SfiProxy proxy)
+bst_sniffer_scope_set_sniffer (BstSnifferScope *self, Bse::SourceH source)
{
- if (proxy)
+ if (source)
{
- assert_return (BSE_IS_SOURCE (proxy));
- if (!bse_source_has_outputs (proxy))
- proxy = 0;
+ if (!source.has_outputs())
+ source = Bse::SourceH();
}
- if (self->proxy)
+ if (self->source)
{
- bse_proxy_disconnect (self->proxy,
+ bse_proxy_disconnect (self->source.proxy_id(),
"any_signal::probes", scope_probes_notify, self,
NULL);
}
- self->proxy = proxy;
- if (self->proxy)
+ self->source = source;
+ if (self->source)
{
- bse_proxy_connect (self->proxy,
+ bse_proxy_connect (self->source.proxy_id(),
"signal::probes", scope_probes_notify, self,
NULL);
- bst_source_queue_probe_request (self->proxy, 0, BST_SOURCE_PROBE_RANGE, 20.0);
- bst_source_queue_probe_request (self->proxy, 1, BST_SOURCE_PROBE_RANGE, 20.0);
+ bst_source_queue_probe_request (self->source.proxy_id(), 0, BST_SOURCE_PROBE_RANGE, 20.0);
+ bst_source_queue_probe_request (self->source.proxy_id(), 1, BST_SOURCE_PROBE_RANGE, 20.0);
}
}
diff --git a/beast-gtk/bstsnifferscope.hh b/beast-gtk/bstsnifferscope.hh
index 1b15387..1597758 100644
--- a/beast-gtk/bstsnifferscope.hh
+++ b/beast-gtk/bstsnifferscope.hh
@@ -14,18 +14,17 @@
/* --- API --- */
typedef struct {
- GtkWidget parent_instance;
- SfiProxy proxy;
- guint n_values;
- float *lvalues;
- float *rvalues;
- GdkGC *oshoot_gc;
+ GtkWidget parent_instance;
+ Bse::SourceH source;
+ guint n_values;
+ float *lvalues;
+ float *rvalues;
+ GdkGC *oshoot_gc;
} BstSnifferScope;
typedef GtkWidgetClass BstSnifferScopeClass;
GType bst_sniffer_scope_get_type (void);
GtkWidget* bst_sniffer_scope_new (void);
-void bst_sniffer_scope_set_sniffer (BstSnifferScope *scope,
- SfiProxy proxy);
+void bst_sniffer_scope_set_sniffer (BstSnifferScope *scope, Bse::SourceH source = Bse::SourceH());
typedef enum {
BST_SOURCE_PROBE_RANGE = 0x01,
diff --git a/beast-gtk/bsttrackroll.cc b/beast-gtk/bsttrackroll.cc
index a438ff6..ae2dbb3 100644
--- a/beast-gtk/bsttrackroll.cc
+++ b/beast-gtk/bsttrackroll.cc
@@ -448,7 +448,7 @@ scope_set_track (GtkWidget *scope, Bse::TrackH track)
{
g_object_set_long (scope, "BstTrackRoll-Track", track.proxy_id());
if (BST_SNIFFER_SCOPE (scope))
- bst_sniffer_scope_set_sniffer (BST_SNIFFER_SCOPE (scope), track.get_output_source().proxy_id());
+ bst_sniffer_scope_set_sniffer (BST_SNIFFER_SCOPE (scope), track.get_output_source());
}
static Bse::TrackH
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]