[beast: 10/11] BST: use Bse::SourceH instead of proxy IDs to store module handles
- From: Tim Janik <timj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [beast: 10/11] BST: use Bse::SourceH instead of proxy IDs to store module handles
- Date: Tue, 5 Sep 2017 23:17:34 +0000 (UTC)
commit 8fcc4b13d107b478a63b748a1e7d27adf8a52458
Author: Tim Janik <timj gnu org>
Date: Wed Sep 6 01:10:21 2017 +0200
BST: use Bse::SourceH instead of proxy IDs to store module handles
Signed-off-by: Tim Janik <timj gnu org>
beast-gtk/bstcanvaslink.cc | 16 ++--
beast-gtk/bstcanvassource.cc | 147 ++++++++++++++++++++---------------------
beast-gtk/bstcanvassource.hh | 2 +-
beast-gtk/bstsnetrouter.cc | 51 ++++++--------
4 files changed, 103 insertions(+), 113 deletions(-)
---
diff --git a/beast-gtk/bstcanvaslink.cc b/beast-gtk/bstcanvaslink.cc
index 67bba6a..8338c3c 100644
--- a/beast-gtk/bstcanvaslink.cc
+++ b/beast-gtk/bstcanvaslink.cc
@@ -107,13 +107,13 @@ clink_view_update (BstCanvasLink *clink,
const gchar *iname, *oname;
gchar *string;
- Bse::SourceH icsource = clink->icsource ? Bse::SourceH::down_cast (bse_server.from_proxy
(clink->icsource->source)) : Bse::SourceH();
- Bse::SourceH ocsource = clink->ocsource ? Bse::SourceH::down_cast (bse_server.from_proxy
(clink->ocsource->source)) : Bse::SourceH();
+ Bse::SourceH icsource = clink->icsource->source;
+ Bse::SourceH ocsource = clink->ocsource->source;
/* figure appropriate window title
*/
- iname = clink->icsource ? bse_item_get_name_or_type (clink->icsource->source) : "<""???"">";
- oname = clink->ocsource ? bse_item_get_name_or_type (clink->ocsource->source) : "<""???"">";
+ iname = clink->icsource ? bse_item_get_name_or_type (icsource.proxy_id()) : "<""???"">";
+ oname = clink->ocsource ? bse_item_get_name_or_type (ocsource.proxy_id()) : "<""???"">";
string = g_strconcat (_("Module Link: "), iname, " <=> ", oname, NULL);
gxk_dialog_set_title (GXK_DIALOG (clink->link_view), string);
g_free (string);
@@ -208,7 +208,7 @@ bst_canvas_link_set_ocsource (BstCanvasLink *clink,
if (clink->ocsource)
{
if (clink->ocsource->source) /* source may be destroyed already */
- bse_proxy_disconnect (clink->ocsource->source,
+ bse_proxy_disconnect (clink->ocsource->source.proxy_id(),
"any_signal", clink_view_check_update, clink,
NULL);
if (g_signal_handler_is_connected (clink->ocsource, clink->oc_handler))
@@ -224,7 +224,7 @@ bst_canvas_link_set_ocsource (BstCanvasLink *clink,
"notify",
G_CALLBACK (bst_canvas_link_update),
GTK_OBJECT (clink));
- bse_proxy_connect (clink->ocsource->source,
+ bse_proxy_connect (clink->ocsource->source.proxy_id(),
"swapped_signal::property-notify::uname", clink_view_check_update, clink,
NULL);
bst_canvas_link_update (clink);
@@ -243,7 +243,7 @@ bst_canvas_link_set_icsource (BstCanvasLink *clink,
if (clink->icsource)
{
if (clink->icsource->source) /* source may be destroyed already */
- bse_proxy_disconnect (clink->icsource->source,
+ bse_proxy_disconnect (clink->icsource->source.proxy_id(),
"any_signal", clink_view_check_update, clink,
NULL);
if (g_signal_handler_is_connected (clink->icsource, clink->ic_handler))
@@ -259,7 +259,7 @@ bst_canvas_link_set_icsource (BstCanvasLink *clink,
"notify",
G_CALLBACK (bst_canvas_link_update),
GTK_OBJECT (clink));
- bse_proxy_connect (clink->icsource->source,
+ bse_proxy_connect (clink->icsource->source.proxy_id(),
"swapped_signal::property-notify::uname", clink_view_check_update, clink,
NULL);
bst_canvas_link_update (clink);
diff --git a/beast-gtk/bstcanvassource.cc b/beast-gtk/bstcanvassource.cc
index b1e571f..3868c7b 100644
--- a/beast-gtk/bstcanvassource.cc
+++ b/beast-gtk/bstcanvassource.cc
@@ -52,7 +52,8 @@ static void bst_canvas_source_build (BstCanvasSource *csource
/* --- static variables --- */
-static guint csource_signals[SIGNAL_LAST] = { 0 };
+static void *parent_class = NULL;
+static uint csource_signals[SIGNAL_LAST] = { 0 };
/* --- functions --- */
@@ -61,9 +62,8 @@ G_DEFINE_TYPE (BstCanvasSource, bst_canvas_source, GNOME_TYPE_CANVAS_GROUP);
static void
bst_canvas_source_init (BstCanvasSource *csource)
{
- GtkObject *object = GTK_OBJECT (csource);
+ new (&csource->source) Bse::SourceH();
- csource->source = 0;
csource->params_dialog = NULL;
csource->source_info = NULL;
csource->icon_item = NULL;
@@ -75,12 +75,24 @@ bst_canvas_source_init (BstCanvasSource *csource)
csource->show_hints = FALSE;
csource->move_dx = 0;
csource->move_dy = 0;
+ GtkObject *object = GTK_OBJECT (csource);
g_object_connect (object,
"signal::notify", bst_canvas_source_changed, NULL,
NULL);
}
static void
+bst_canvas_source_finalize (GObject *object)
+{
+ BstCanvasSource *self = BST_CANVAS_SOURCE (object);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+
+ using namespace Bse;
+ self->source.~SourceH();
+}
+
+static void
source_channels_changed (BstCanvasSource *csource)
{
assert_return (BST_IS_CANVAS_SOURCE (csource));
@@ -99,7 +111,7 @@ idle_move_item (gpointer data)
if (self->source && item->canvas)
{
SfiReal x, y;
- bse_proxy_get (self->source,
+ bse_proxy_get (self->source.proxy_id(),
"pos-x", &x,
"pos-y", &y,
NULL);
@@ -146,7 +158,7 @@ source_name_changed (BstCanvasSource *csource)
assert_return (BST_IS_CANVAS_SOURCE (csource));
- name = bse_item_get_name_or_type (csource->source);
+ name = bse_item_get_name_or_type (csource->source.proxy_id());
if (csource->text)
g_object_set (csource->text, "text", name, NULL);
@@ -168,9 +180,8 @@ source_icon_changed (BstCanvasSource *csource)
// update icon in group, revert to a stock icon if none is available
if (csource->icon_item)
{
- Bse::ItemH source_item = Bse::ItemH::down_cast (bse_server.from_proxy (csource->source));
- Bse::Icon icon = source_item.icon();
- bst_canvas_icon_set (csource->icon_item, icon, bse_item_get_type (csource->source));
+ Bse::Icon icon = csource->source.icon();
+ bst_canvas_icon_set (csource->icon_item, icon, bse_item_get_type (csource->source.proxy_id()));
}
}
@@ -183,7 +194,7 @@ bst_canvas_source_destroy (GtkObject *object)
if (csource->in_move)
{
csource->in_move = FALSE;
- bse_item_ungroup_undo (csource->source);
+ bse_item_ungroup_undo (csource->source.proxy_id());
}
while (csource->channel_hints)
@@ -193,15 +204,15 @@ bst_canvas_source_destroy (GtkObject *object)
if (csource->source)
{
- bse_proxy_disconnect (csource->source,
+ bse_proxy_disconnect (csource->source.proxy_id(),
"any_signal", gtk_object_destroy, csource,
"any_signal", source_channels_changed, csource,
"any_signal", source_name_changed, csource,
"any_signal", source_pos_changed, csource,
"any_signal", source_icon_changed, csource,
NULL);
- bse_item_unuse (csource->source);
- csource->source = 0;
+ bse_item_unuse (csource->source.proxy_id());
+ csource->source = Bse::SourceH();
}
GTK_OBJECT_CLASS (bst_canvas_source_parent_class)->destroy (object);
@@ -223,8 +234,10 @@ bst_canvas_source_new (GnomeCanvasGroup *group,
BST_TYPE_CANVAS_SOURCE,
NULL);
csource = BST_CANVAS_SOURCE (item);
- csource->source = bse_item_use (source);
- bse_proxy_connect (csource->source,
+ csource->source = Bse::SourceH::down_cast (bse_server.from_proxy (source));
+ if (csource->source)
+ bse_item_use (csource->source.proxy_id());
+ bse_proxy_connect (csource->source.proxy_id(),
"swapped_signal::release", gtk_object_destroy, csource,
"swapped_signal::io_changed", source_channels_changed, csource,
"swapped_signal::property-notify::uname", source_name_changed, csource,
@@ -257,11 +270,11 @@ canvas_source_create_params (BstCanvasSource *csource)
{
GtkWidget *param_view;
- param_view = bst_param_view_new (csource->source);
+ param_view = bst_param_view_new (csource->source.proxy_id());
csource->params_dialog = (GtkWidget*) gxk_dialog_new (&csource->params_dialog,
GTK_OBJECT (csource),
GXK_DIALOG_POPUP_POS,
- bse_item_get_name_or_type (csource->source),
+ bse_item_get_name_or_type
(csource->source.proxy_id()),
param_view);
source_name_changed (csource);
}
@@ -326,20 +339,18 @@ csource_info_update (BstCanvasSource *csource)
{
/* construct information */
gxk_scroll_text_clear (text);
- gxk_scroll_text_aprintf (text, "%s:\n", bse_item_get_name_or_type (csource->source));
+ gxk_scroll_text_aprintf (text, "%s:\n", bse_item_get_name_or_type (csource->source.proxy_id()));
/* type & category */
gxk_scroll_text_push_indent (text);
- gxk_scroll_text_aprintf (text, "Type: %s\n", bse_item_get_type_name (csource->source));
- Bse::CategorySeq cseq = bse_server.category_match_typed ("*", bse_item_get_type_name
(csource->source));
+ gxk_scroll_text_aprintf (text, "Type: %s\n", bse_item_get_type_name (csource->source.proxy_id()));
+ Bse::CategorySeq cseq = bse_server.category_match_typed ("*", bse_item_get_type_name
(csource->source.proxy_id()));
if (cseq.size())
gxk_scroll_text_aprintf (text, "Category: %s\n", cseq[0].category);
gxk_scroll_text_pop_indent (text);
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
-
/* input channels */
- const size_t csource_source_n_ichannels = csource_source.n_ichannels();
+ const size_t csource_source_n_ichannels = csource->source.n_ichannels();
if (csource_source_n_ichannels)
{
gxk_scroll_text_aprintf (text, "\nInput Channels:\n");
@@ -347,10 +358,10 @@ csource_info_update (BstCanvasSource *csource)
}
for (size_t i = 0; i < csource_source_n_ichannels; i++)
{
- const String string = csource_source.ichannel_blurb (i);
+ const String string = csource->source.ichannel_blurb (i);
gxk_scroll_text_aprintf (text, "%s[%s]%s\n",
- csource_source.ichannel_label (i).c_str(),
- csource_source.ichannel_ident (i).c_str(),
+ csource->source.ichannel_label (i).c_str(),
+ csource->source.ichannel_ident (i).c_str(),
string.empty() ? "" : ":");
if (!string.empty())
{
@@ -363,7 +374,7 @@ csource_info_update (BstCanvasSource *csource)
gxk_scroll_text_pop_indent (text);
/* output channels */
- const size_t csource_source_n_ochannels = csource_source.n_ochannels();
+ const size_t csource_source_n_ochannels = csource->source.n_ochannels();
if (csource_source_n_ochannels)
{
gxk_scroll_text_aprintf (text, "\nOutput Channels:\n");
@@ -371,10 +382,10 @@ csource_info_update (BstCanvasSource *csource)
}
for (size_t i = 0; i < csource_source_n_ochannels; i++)
{
- const String string = csource_source.ochannel_blurb (i);
+ const String string = csource->source.ochannel_blurb (i);
gxk_scroll_text_aprintf (text, "%s[%s]%s\n",
- csource_source.ochannel_label (i).c_str(),
- csource_source.ochannel_ident (i).c_str(),
+ csource->source.ochannel_label (i).c_str(),
+ csource->source.ochannel_ident (i).c_str(),
string.empty() ? "" : ":");
if (!string.empty())
{
@@ -387,7 +398,7 @@ csource_info_update (BstCanvasSource *csource)
gxk_scroll_text_pop_indent (text);
/* description */
- const gchar *string = bse_item_get_type_blurb (csource->source);
+ const gchar *string = bse_item_get_type_blurb (csource->source.proxy_id());
if (string && string[0])
{
gxk_scroll_text_aprintf (text, "\nDescription:\n");
@@ -397,12 +408,12 @@ csource_info_update (BstCanvasSource *csource)
}
/* authors */
- string = bse_item_get_type_authors (csource->source);
+ string = bse_item_get_type_authors (csource->source.proxy_id());
if (string && string[0])
gxk_scroll_text_aprintf (text, "\nAuthors: %s\n", string);
/* license */
- string = bse_item_get_type_license (csource->source);
+ string = bse_item_get_type_license (csource->source.proxy_id());
if (string && string[0])
gxk_scroll_text_aprintf (text, "\nLicense: %s\n", string);
}
@@ -430,7 +441,7 @@ bst_canvas_source_popup_info (BstCanvasSource *csource)
csource->source_info = (GtkWidget*) gxk_dialog_new (&csource->source_info,
GTK_OBJECT (csource),
GXK_DIALOG_POPUP_POS,
- bse_item_get_name_or_type (csource->source),
+ bse_item_get_name_or_type
(csource->source.proxy_id()),
sctext);
}
csource_info_update (csource);
@@ -466,9 +477,7 @@ bst_canvas_source_is_jchannel (BstCanvasSource *csource,
if (!csource->source)
return FALSE;
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
-
- return csource_source.is_joint_ichannel_by_id (ichannel);
+ return csource->source.is_joint_ichannel_by_id (ichannel);
}
gboolean
@@ -479,13 +488,11 @@ bst_canvas_source_ichannel_free (BstCanvasSource *csource, uint ichannel)
if (!csource->source)
return FALSE;
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
-
- if (csource_source.is_joint_ichannel_by_id (ichannel))
+ if (csource->source.is_joint_ichannel_by_id (ichannel))
return TRUE;
else
{
- Bse::SourceH osource = csource_source.ichannel_get_osource (ichannel, 0);
+ Bse::SourceH osource = csource->source.ichannel_get_osource (ichannel, 0);
return osource == NULL;
}
}
@@ -502,10 +509,7 @@ bst_canvas_source_ichannel_pos (BstCanvasSource *csource,
x = ICHANNEL_X (csource) + CHANNEL_WIDTH (csource) / 2;
if (csource->source)
- {
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
- y = CHANNEL_HEIGHT (csource) / csource_source.n_ichannels();
- }
+ y = CHANNEL_HEIGHT (csource) / csource->source.n_ichannels();
y *= ochannel + 0.5;
y += ICHANNEL_Y (csource);
gnome_canvas_item_i2w (GNOME_CANVAS_ITEM (csource), &x, &y);
@@ -527,10 +531,7 @@ bst_canvas_source_ochannel_pos (BstCanvasSource *csource,
x = OCHANNEL_X (csource) + CHANNEL_WIDTH (csource) / 2;
if (csource->source)
- {
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
- y = CHANNEL_HEIGHT (csource) / csource_source.n_ochannels();
- }
+ y = CHANNEL_HEIGHT (csource) / csource->source.n_ochannels();
y *= ichannel + 0.5;
y += OCHANNEL_Y (csource);
gnome_canvas_item_i2w (GNOME_CANVAS_ITEM (csource), &x, &y);
@@ -549,17 +550,15 @@ bst_canvas_source_ichannel_at (BstCanvasSource *csource,
assert_return (BST_IS_CANVAS_SOURCE (csource), 0);
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
-
gnome_canvas_item_w2i (GNOME_CANVAS_ITEM (csource), &x, &y);
x -= ICHANNEL_X (csource);
y -= ICHANNEL_Y (csource);
if (x > 0 && x < CHANNEL_WIDTH (csource) &&
y > 0 && y < CHANNEL_HEIGHT (csource) &&
- csource_source.n_ichannels())
+ csource->source.n_ichannels())
{
- y /= CHANNEL_HEIGHT (csource) / csource_source.n_ichannels();
+ y /= CHANNEL_HEIGHT (csource) / csource->source.n_ichannels();
channel = y;
}
@@ -575,17 +574,15 @@ bst_canvas_source_ochannel_at (BstCanvasSource *csource,
assert_return (BST_IS_CANVAS_SOURCE (csource), 0);
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
-
gnome_canvas_item_w2i (GNOME_CANVAS_ITEM (csource), &x, &y);
x -= OCHANNEL_X (csource);
y -= OCHANNEL_Y (csource);
if (x > 0 && x < CHANNEL_WIDTH (csource) &&
y > 0 && y < CHANNEL_HEIGHT (csource) &&
- csource_source.n_ochannels())
+ csource->source.n_ochannels())
{
- y /= CHANNEL_HEIGHT (csource) / csource_source.n_ochannels();
+ y /= CHANNEL_HEIGHT (csource) / csource->source.n_ochannels();
channel = y;
}
@@ -651,17 +648,15 @@ bst_canvas_source_build_channels (BstCanvasSource *csource,
gdouble d_y;
gboolean east_channel = CHANNEL_EAST (csource, is_input);
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
-
if (is_input)
{
- n_channels = csource_source.n_ichannels();
+ n_channels = csource->source.n_ichannels();
x1 = ICHANNEL_X (csource);
y1 = ICHANNEL_Y (csource);
}
else
{
- n_channels = csource_source.n_ochannels();
+ n_channels = csource->source.n_ochannels();
x1 = OCHANNEL_X (csource);
y1 = OCHANNEL_Y (csource);
}
@@ -710,8 +705,8 @@ bst_canvas_source_build_channels (BstCanvasSource *csource,
for (int i = 0; i < n_channels; i++)
{
GnomeCanvasItem *item;
- gboolean is_jchannel = is_input && csource_source.is_joint_ichannel_by_id (i);
- const String label = is_input ? csource_source.ichannel_label (i) : csource_source.ochannel_label (i);
+ gboolean is_jchannel = is_input && csource->source.is_joint_ichannel_by_id (i);
+ const String label = is_input ? csource->source.ichannel_label (i) : csource->source.ochannel_label
(i);
guint tmp_color = is_jchannel ? color2 : color1;
y2 = y1 + d_y;
@@ -813,7 +808,7 @@ bst_canvas_source_build_async (gpointer data)
if (!csource->text)
{
/* add text item, invoke name_changed callback to setup the text value */
- guint ocolor = csource->source && bse_item_internal (csource->source) ? RGBA_INTERNAL : RGBA_BLACK;
+ guint ocolor = csource->source && bse_item_internal (csource->source.proxy_id()) ? RGBA_INTERNAL :
RGBA_BLACK;
csource->text = gnome_canvas_item_new (group,
GNOME_TYPE_CANVAS_TEXT,
"fill_color_rgba", ocolor,
@@ -906,8 +901,7 @@ bst_canvas_source_changed (BstCanvasSource *csource)
GnomeCanvasItem *item = GNOME_CANVAS_ITEM (csource);
gdouble x = 0, y = 0;
gnome_canvas_item_i2w (item, &x, &y);
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
- csource_source.set_pos (x / BST_CANVAS_SOURCE_PIXEL_SCALE, y / -BST_CANVAS_SOURCE_PIXEL_SCALE);
+ csource->source.set_pos (x / BST_CANVAS_SOURCE_PIXEL_SCALE, y / -BST_CANVAS_SOURCE_PIXEL_SCALE);
}
}
@@ -934,7 +928,7 @@ bst_canvas_source_event (GnomeCanvasItem *item,
csource->move_dx = x;
csource->move_dy = y;
csource->in_move = TRUE;
- bse_item_group_undo (csource->source, "Move");
+ bse_item_group_undo (csource->source.proxy_id(), "Move");
}
gdk_cursor_destroy (fleur);
handled = TRUE;
@@ -952,7 +946,6 @@ bst_canvas_source_event (GnomeCanvasItem *item,
}
else
{
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
guint channel;
const gchar *prefix = NULL;
String label, ident;
@@ -961,8 +954,8 @@ bst_canvas_source_event (GnomeCanvasItem *item,
channel = bst_canvas_source_ichannel_at (csource, event->motion.x, event->motion.y);
if (channel != ~uint (0))
{
- label = csource_source.ichannel_label (channel);
- ident = csource_source.ichannel_ident (channel);
+ label = csource->source.ichannel_label (channel);
+ ident = csource->source.ichannel_ident (channel);
prefix = _("Input");
}
else
@@ -970,8 +963,8 @@ bst_canvas_source_event (GnomeCanvasItem *item,
channel = bst_canvas_source_ochannel_at (csource, event->motion.x, event->motion.y);
if (channel != ~uint (0))
{
- label = csource_source.ochannel_label (channel);
- ident = csource_source.ochannel_ident (channel);
+ label = csource->source.ochannel_label (channel);
+ ident = csource->source.ochannel_ident (channel);
prefix = _("Output");
}
}
@@ -984,7 +977,7 @@ bst_canvas_source_event (GnomeCanvasItem *item,
case GDK_BUTTON_RELEASE:
if (bst_mouse_button_move (event) && csource->in_move)
{
- bse_item_ungroup_undo (csource->source);
+ bse_item_ungroup_undo (csource->source.proxy_id());
csource->in_move = FALSE;
gnome_canvas_item_ungrab (item, event->button.time);
handled = TRUE;
@@ -1050,11 +1043,15 @@ bst_canvas_source_child_event (BstCanvasSource *csource,
static void
bst_canvas_source_class_init (BstCanvasSourceClass *klass)
{
- GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
- GnomeCanvasItemClass *canvas_item_class = GNOME_CANVAS_ITEM_CLASS (klass);
- /* GnomeCanvasGroupClass *canvas_group_class = GNOME_CANVAS_GROUP_CLASS (klass); */
+ parent_class = g_type_class_peek_parent (klass);
+ GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
object_class->destroy = bst_canvas_source_destroy;
+
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = bst_canvas_source_finalize;
+
+ GnomeCanvasItemClass *canvas_item_class = GNOME_CANVAS_ITEM_CLASS (klass);
canvas_item_class->event = bst_canvas_source_event;
klass->update_links = NULL;
diff --git a/beast-gtk/bstcanvassource.hh b/beast-gtk/bstcanvassource.hh
index 4ae2e5e..6841ec1 100644
--- a/beast-gtk/bstcanvassource.hh
+++ b/beast-gtk/bstcanvassource.hh
@@ -21,7 +21,7 @@ struct _BstCanvasSource
{
GnomeCanvasGroup parent_object;
- SfiProxy source;
+ Bse::SourceH source;
GtkWidget *params_dialog;
GtkWidget *source_info;
diff --git a/beast-gtk/bstsnetrouter.cc b/beast-gtk/bstsnetrouter.cc
index 64c2f7e..09fbc90 100644
--- a/beast-gtk/bstsnetrouter.cc
+++ b/beast-gtk/bstsnetrouter.cc
@@ -153,24 +153,22 @@ bst_snet_router_update_links (BstSNetRouter *self,
self->canvas_links = sfi_ring_append (self->canvas_links, link);
}
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
-
/* now we walk the (c)source's input channels, keep
* existing links and create new ones on the fly
*/
- for (int i = 0; i < csource_source.n_ichannels(); i++)
+ for (int i = 0; i < csource->source.n_ichannels(); i++)
{
- guint j, n_joints = csource_source.ichannel_get_n_joints (i);
+ guint j, n_joints = csource->source.ichannel_get_n_joints (i);
for (j = 0; j < n_joints; j++)
{
- Bse::ObjectH obj = bse_server.from_proxy (csource->source);
+ Bse::ObjectH obj = csource->source;
assert_return (obj != NULL);
- Bse::SourceH isource = Bse::SourceH::down_cast (bse_server.from_proxy (csource->source));
+ Bse::SourceH isource = csource->source;
assert_return (isource != NULL);
SfiProxy osource = isource.ichannel_get_osource (i, j).proxy_id();
if (!osource)
continue;
- guint ochannel = csource_source.ichannel_get_ochannel (i, j);
+ guint ochannel = csource->source.ichannel_get_ochannel (i, j);
BstCanvasSource *ocsource = bst_snet_router_csource_from_source (self, osource);
if (!ocsource)
{
@@ -472,7 +470,7 @@ bst_snet_router_csource_from_source (BstSNetRouter *router,
{
BstCanvasSource *csource = (BstCanvasSource*) list->data;
- if (BST_IS_CANVAS_SOURCE (csource) && csource->source == source)
+ if (BST_IS_CANVAS_SOURCE (csource) && csource->source.proxy_id() == source)
return csource;
}
@@ -603,7 +601,7 @@ bst_snet_router_root_event (BstSNetRouter *self,
gxk_status_set (GXK_STATUS_WAIT, _("Create Link"), _("Select input module"));
handled = TRUE;
}
- else if (csource && csource->source != (SfiProxy) self->snet.proxy_id())
+ else if (csource && csource->source != self->snet)
{
if (bst_mouse_button_activate2 (event))
bst_canvas_source_toggle_info (csource);
@@ -623,15 +621,13 @@ bst_snet_router_root_event (BstSNetRouter *self,
}
else
{
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy
(csource->source));
- Bse::SourceH drag_csource_source = Bse::SourceH::down_cast (bse_server.from_proxy
(self->drag_csource->source));
Bse::Error error;
if (!csource || (self->drag_is_input ? ochannel : ichannel) == ~uint (0))
error = self->drag_is_input ? Bse::Error::SOURCE_NO_SUCH_OCHANNEL :
Bse::Error::SOURCE_NO_SUCH_ICHANNEL;
else if (self->drag_is_input)
- error = drag_csource_source.set_input_by_id (self->drag_channel, csource_source, ochannel);
+ error = self->drag_csource->source.set_input_by_id (self->drag_channel, csource->source,
ochannel);
else
- error = csource_source.set_input_by_id (ichannel, drag_csource_source, self->drag_channel);
+ error = csource->source.set_input_by_id (ichannel, self->drag_csource->source,
self->drag_channel);
self->drag_csource = NULL;
self->drag_channel = ~0;
bst_snet_router_reset_tool (self);
@@ -643,36 +639,35 @@ bst_snet_router_root_event (BstSNetRouter *self,
{
if (csource)
{
- Bse::SourceH csource_source = Bse::SourceH::down_cast (bse_server.from_proxy
(csource->source));
GtkWidget *choice;
- gchar *source_name = g_strconcat (bse_item_get_type_name (csource->source),
+ gchar *source_name = g_strconcat (bse_item_get_type_name (csource->source.proxy_id()),
": ",
- bse_item_get_name (csource->source),
+ bse_item_get_name (csource->source.proxy_id()),
NULL);
/* create popup sumenu */
uint has_inputs = 0, monitor_ids = 1000000;
choice = bst_choice_menu_createv ("<BEAST-SNetRouter>/ModuleChannelPopup", NULL);
- for (int i = 0; i < csource_source.n_ochannels(); i++)
+ for (int i = 0; i < csource->source.n_ochannels(); i++)
{
- gchar *name = g_strdup_format ("%d: %s", i + 1, csource_source.ochannel_label (i));
+ gchar *name = g_strdup_format ("%d: %s", i + 1, csource->source.ochannel_label (i));
bst_choice_menu_add_choice_and_free (choice, BST_CHOICE (monitor_ids + i, name, NONE));
g_free (name);
}
/* create popup */
- for (int i = 0; has_inputs == 0 && i < csource_source.n_ichannels(); i++)
- has_inputs += csource_source.ichannel_get_n_joints (i);
+ for (int i = 0; has_inputs == 0 && i < csource->source.n_ichannels(); i++)
+ has_inputs += csource->source.ichannel_get_n_joints (i);
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,
csource_source.has_outputs()),
+ 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),
BST_CHOICE_SEPERATOR,
- BST_CHOICE_S (1, _("Delete"), DELETE, csource->source !=
(SfiProxy) self->snet.proxy_id()),
+ BST_CHOICE_S (1, _("Delete"), DELETE, csource->source !=
self->snet),
BST_CHOICE_END);
g_free (source_name);
int i = bst_choice_modal (choice, event->button.button, event->button.time);
@@ -687,21 +682,21 @@ bst_snet_router_root_event (BstSNetRouter *self,
bst_canvas_source_reset_params (csource);
break;
case 3:
- csource_source.clear_inputs();
+ csource->source.clear_inputs();
break;
case 4:
- csource_source.clear_outputs();
+ csource->source.clear_outputs();
break;
case 5:
bst_canvas_source_popup_info (csource);
break;
case 1:
- error = self->snet.remove_source (csource_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;
}
@@ -728,9 +723,7 @@ bst_snet_router_root_event (BstSNetRouter *self,
Bse::Error error;
case 1:
{
- Bse::SourceH icsource = Bse::SourceH::down_cast (bse_server.from_proxy
(clink->icsource->source));
- Bse::SourceH ocsource = Bse::SourceH::down_cast (bse_server.from_proxy
(clink->ocsource->source));
- error = icsource.unset_input_by_id (clink->ichannel, ocsource, clink->ochannel);
+ error = clink->icsource->source.unset_input_by_id (clink->ichannel,
clink->ocsource->source, clink->ochannel);
bst_status_eprintf (error, _("Delete Link"));
}
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]