예제 #1
0
파일: main.c 프로젝트: community-ssu/mafw
static void 
source_removed_cb(MafwRegistry * registry, GObject *source, gpointer user_data)
{
	/* Get a reference to the unavailable source */
	if (MAFW_IS_SOURCE(source)) {
		g_print("Removing source %s \n", 
			mafw_extension_get_name(MAFW_EXTENSION(source)));
                remove_source(MAFW_SOURCE(source));

		mtg_print_signal (MAFW_EXTENSION(source),
				  "Registry::source-removed", "\n");
	}
}
예제 #2
0
파일: main.c 프로젝트: community-ssu/mafw
static void
renderer_removed_cb(MafwRegistry * registry, GObject *renderer, gpointer user_data)
{
	/* Get a reference to the available renderer */
	if (MAFW_IS_RENDERER(renderer)) {
		g_print("Renderer %s removed\n", 
			mafw_extension_get_name(MAFW_EXTENSION(renderer)));
		remove_media_renderer(MAFW_RENDERER(renderer));

		mtg_print_signal (MAFW_EXTENSION(renderer),
				  "Registry::renderer-removed", "\n");
	}
}
예제 #3
0
파일: main.c 프로젝트: community-ssu/mafw
static void 
source_added_cb(MafwRegistry * registry, GObject *source, gpointer user_data)
{
	/* Get a reference to the available source */
	if (MAFW_IS_SOURCE(source)) {
		g_print("Source %s available\n", 
			mafw_extension_get_name(MAFW_EXTENSION(source)));
                /* Do not add metadata resolver source */
                if (strcmp(mafw_extension_get_uuid(MAFW_EXTENSION(source)), "gnomevfs") != 0)
                        add_source(MAFW_SOURCE(source));

		mtg_print_signal (MAFW_EXTENSION(source),
				  "Registry::source-added", "\n");
	}
}
예제 #4
0
static void
append_media_renderer_to_tree (MafwRenderer          *renderer,
                               const char        *uuid)
{
    MafwRenderer         *info;
    GtkComboBox      *combo;
    GtkTreeModel     *model;
    GtkTreeIter       iter;
    char             *name;
    gboolean          was_empty;

    info = MAFW_RENDERER (renderer);
    combo = GTK_COMBO_BOX (renderer_combo);

    name = g_strdup(mafw_extension_get_name (MAFW_EXTENSION(info)));
    if (name == NULL)
        name = g_strdup (uuid);
    /* Hack to set true the current-frame-on-pause property */
    else if (g_strcmp0(name, "Mafw-Gst-Renderer") == 0) {
        mafw_extension_set_property_boolean (MAFW_EXTENSION(info),
                                             "current-frame-on-pause",
                                             TRUE);
    }

    mafw_extension_get_property (MAFW_EXTENSION(info),
                                 "volume", update_volume,
                                 renderer);

    model = gtk_combo_box_get_model (combo);

    if (gtk_combo_box_get_active (combo) == -1)
        was_empty = TRUE;
    else
        was_empty = FALSE;

    memset (&iter, 0, sizeof (iter));
    gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, -1,
                                       RENDERER_COMBO_COLUMN_NAME, name,
                                       RENDERER_COMBO_COLUMN_RENDERER,
                                       renderer,
                                       RENDERER_COMBO_COLUMN_STATE, Stopped,
                                       -1);

    if (was_empty)
        gtk_combo_box_set_active_iter (combo, &iter);

    g_free (name);
}
예제 #5
0
END_TEST START_TEST(test_add_3_sources)
{
	MafwRegistry *reg = NULL;
	MafwSource *source1 = NULL;
	MafwSource *source2 = NULL;
	MafwSource *source3 = NULL;
	GList *sources = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "source_added", (GCallback) source_added, NULL);

	source1 = g_object_new(nop_source_get_type(),
			       "uuid", "SomeSource1",
			       "name", "nop",
			       NULL);
	source2 = g_object_new(nop_source_get_type(),
			       "uuid", "SomeSource2",
			       "name", "nop",
			       NULL);
	source3 = g_object_new(nop_source_get_type(),
			       "uuid", "SomeSource3",
			       "name", "nop",
			       NULL);

	/* Add source1 */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(source1));
	fail_unless(source_added_ok, "Source add failed\n");
	sources = mafw_registry_get_sources(reg);
	fail_unless(g_list_length(sources) == 1, "Sources list size wrong\n");
	source_added_ok = FALSE;

	/* Add source2 */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(source2));
	fail_unless(source_added_ok, "Source add failed\n");
	sources = mafw_registry_get_sources(reg);
	fail_unless(g_list_length(sources) == 2, "Sources list size wrong\n");
	source_added_ok = FALSE;

	/* Add source3 */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(source3));
	fail_unless(source_added_ok, "Source add failed\n");
	sources = mafw_registry_get_sources(reg);
	fail_unless(g_list_length(sources) == 3, "Sources list size wrong\n");

	g_object_unref(reg);
}
예제 #6
0
void set_selected_renderer_volume (gfloat volume)
{
    MafwRenderer     *renderer;
    GValue        value = {0,};
    GtkTreeModel *model = NULL;
    GtkTreeIter   iter;
    GtkComboBox  *combo;

    combo = GTK_COMBO_BOX (renderer_combo);
    if (!gtk_combo_box_get_active_iter (combo, &iter)) {
        return;
    }

    model = gtk_combo_box_get_model (combo);
    g_assert (model != NULL);

    gtk_tree_model_get (model, &iter,
                        RENDERER_COMBO_COLUMN_RENDERER, &renderer,
                        -1);

    g_value_init (&value, G_TYPE_UINT);
    g_value_set_uint (&value, volume);
    mafw_extension_set_property (MAFW_EXTENSION(renderer),
                                 "volume",
                                 &value);

    gtk_list_store_set (GTK_LIST_STORE(model), &iter,
                        RENDERER_COMBO_COLUMN_VOLUME, (guint) volume,
                        -1);
}
void MafwSourceAdapter::bind(MafwSource *source)
{
    // Check if there is anything to do
    if (source == this->source)
        return;

    if (source) {
        // Unbind current source, if set, before proceeding
        if (this->source)
            bind(NULL);

        // Bind
        g_object_ref(source);
        g_signal_connect(source, "container-changed", G_CALLBACK(&onContainerChanged), static_cast<void*>(this));
        g_signal_connect(source, "metadata-changed" , G_CALLBACK(&onMetadataChanged) , static_cast<void*>(this));
        g_signal_connect(source, "updating"         , G_CALLBACK(&onUpdating)        , static_cast<void*>(this));

        this->source = source;
        m_uuid = mafw_extension_get_uuid(MAFW_EXTENSION(source));

        // Watch only for removals
        disconnect(MafwRegistryAdapter::get(), SIGNAL(sourceAdded(MafwSource*)), this, SLOT(onSourceAdded(MafwSource*)));
        connect(MafwRegistryAdapter::get(), SIGNAL(sourceRemoved(MafwSource*)), this, SLOT(onSourceRemoved(MafwSource*)));

        // Emit the signal in case something changed before the adapter got
        // reconnected after losing its source or to notify listeners about
        // readiness if this is the first time.
        emit containerChanged(uuid() + "::");
    } else {
예제 #8
0
void
add_media_renderer (MafwRenderer *renderer)
{
    GtkTreeModel      *model;
    GtkTreeIter        iter;
    const char        *uuid;

    uuid = mafw_extension_get_uuid(MAFW_EXTENSION(renderer));
    if (uuid == NULL)
        return;

    model = gtk_combo_box_get_model (GTK_COMBO_BOX (renderer_combo));

    if (!find_renderer (model, uuid, &iter)) {
        g_signal_connect(renderer, "state-changed",
                         G_CALLBACK(state_changed_cb), NULL);
        g_signal_connect(renderer, "media-changed",
                         G_CALLBACK(media_changed_cb), NULL);
        g_signal_connect(renderer, "property-changed",
                         G_CALLBACK(property_changed_cb), NULL);
        g_signal_connect(renderer, "metadata-changed",
                         G_CALLBACK(renderer_metadata_changed_cb),
                         NULL);
        g_signal_connect(renderer, "error",
                         G_CALLBACK(renderer_error_cb), NULL);
        g_signal_connect(renderer, "playlist-changed",
                         G_CALLBACK(renderer_playlist_changed_cb),
                         NULL);
        append_media_renderer_to_tree (renderer, uuid);
    }
}
예제 #9
0
END_TEST

/*****************************************************************************
 * Add renderer
 *****************************************************************************/

START_TEST(test_add_renderer)
{
	MafwRegistry *reg = NULL;
	MafwRenderer *renderer = NULL;
	GList *renderers = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "renderer_added", (GCallback) renderer_added, NULL);

	renderer = MAFW_RENDERER(g_object_new(nop_renderer_get_type(), "uuid", "SomeRenderer",
				      NULL));

	/* Add a renderer */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer));
	fail_unless(renderer_added_ok, "Renderer add failed\n");

	/* Get renderers */
	renderers = mafw_registry_get_renderers(reg);
	fail_unless(g_list_length(renderers) == 1, "Renderers list size wrong\n");

	g_object_unref(reg);
}
예제 #10
0
/**
 * Sets the mute toggle button's state, according to the current renderer state
 */
void
update_mute_button (void)
{
	MafwRenderer *renderer = get_selected_renderer();

	mafw_extension_get_property(MAFW_EXTENSION(renderer),
                                    MAFW_PROPERTY_RENDERER_MUTE,
                                    mute_cb, NULL);
}
예제 #11
0
/*
 * Checks if the referenced source is removed, and if so, exits.
 */
static void
source_removed_cb (MafwRegistry *registry,
		   GObject *source,
		   gpointer user_data)
{
	if (MAFW_IS_SOURCE(source)) {
		g_print("[INFO] Source %s removed.\n",
			mafw_extension_get_name(MAFW_EXTENSION(source)));
	}
}
예제 #12
0
/**
 * GTK signal handler for frame-on-pause button presses
 */
void
on_frame_on_pause_button_toggled (GtkWidget *widget)
{
    if (selected_renderer)
        mafw_extension_set_property_boolean(
            MAFW_EXTENSION (selected_renderer),
            "current-frame-on-pause",
            gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(widget)));
}
예제 #13
0
END_TEST START_TEST(test_add_3_renderers)
{
	MafwRegistry *reg = NULL;
	MafwRenderer *renderer1 = NULL;
	MafwRenderer *renderer2 = NULL;
	MafwRenderer *renderer3 = NULL;
	GList *renderers = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "renderer_added", (GCallback) renderer_added, NULL);

	renderer1 = MAFW_RENDERER(g_object_new(nop_renderer_get_type(), "uuid", "SomeRenderer1",
				       NULL));
	renderer2 = MAFW_RENDERER(g_object_new(nop_renderer_get_type(), "uuid", "SomeRenderer2",
				       NULL));
	renderer3 = MAFW_RENDERER(g_object_new(nop_renderer_get_type(), "uuid", "SomeRenderer3",
				       NULL));

	/* Add renderer1 */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer1));
	fail_unless(renderer_added_ok, "Renderer add failed\n");
	renderers = mafw_registry_get_renderers(reg);
	fail_unless(g_list_length(renderers) == 1, "Renderers list size wrong\n");
	renderer_added_ok = FALSE;

	/* Add renderer2 */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer2));
	fail_unless(renderer_added_ok, "Renderer add failed\n");
	renderers = mafw_registry_get_renderers(reg);
	fail_unless(g_list_length(renderers) == 2, "Renderers list size wrong\n");
	renderer_added_ok = FALSE;

	/* Add renderer3 */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer3));
	fail_unless(renderer_added_ok, "Renderer add failed\n");
	renderers = mafw_registry_get_renderers(reg);
	fail_unless(g_list_length(renderers) == 3, "Renderers list size wrong\n");

	g_object_unref(reg);
}
예제 #14
0
/*----------------------------------------------------------------------------
  MAFW Plugin construction
  ----------------------------------------------------------------------------*/
static gboolean iradio_plugin_initialize(MafwRegistry *registry,
					    GError **error)
{
	MafwIradioSource *self = MAFW_IRADIO_SOURCE(
					mafw_iradio_source_new());

	g_debug("Mafw Iradio-Source initialization");
	mafw_registry_add_extension(registry, MAFW_EXTENSION(self));

	return TRUE;
}
예제 #15
0
파일: main.c 프로젝트: community-ssu/mafw
void activate_all(gboolean make_active)
{
	GList *sources = mafw_registry_get_sources(registry);

	while(sources)
	{
		mafw_extension_set_property_boolean(MAFW_EXTENSION(sources->data),
						MAFW_PROPERTY_EXTENSION_ACTIVATE, make_active);
		sources = g_list_next(sources);
	}
}
예제 #16
0
/*
 * Checks for a particular source to be added and
 * saves a reference to it.
 */
static void
source_added_cb (MafwRegistry *registry,
		 GObject *source,
		 gpointer user_data)
{
	if (MAFW_IS_SOURCE(source)) {
		const gchar *name =
			mafw_extension_get_name(MAFW_EXTENSION(source));
		g_print("[INFO] Source %s available.\n", name);
	}
}
예제 #17
0
END_TEST START_TEST(test_add_same_renderer_twice)
{
	MafwRegistry *reg = NULL;
	MafwRenderer *renderer = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "renderer_added", (GCallback) renderer_added, NULL);

	renderer = MAFW_RENDERER(g_object_new(nop_renderer_get_type(), "uuid", "SomeRenderer",
				      NULL));

	/* Add a renderer */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer));
	fail_unless(renderer_added_ok, "Renderer add failed\n");

	/* Add it again... This should assert */
	expect_assert(mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer)));
}
예제 #18
0
static void
media_changed_cb(MafwRenderer *renderer,
                 gint index,
                 gchar *object_id,
                 gpointer user_data)
{
    mtg_print_signal (MAFW_EXTENSION (renderer), "Renderer::media-changed",
                      "Index: %d, ObjectID:%s\n", index, object_id);

    set_current_oid(object_id);
    update_playing_item (index);
}
예제 #19
0
END_TEST

START_TEST(test_remove_non_existing_source)
{
	MafwRegistry *reg = NULL;
	MafwSource *source1 = NULL;
	MafwSource *source2 = NULL;
	GList *sources = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "source_removed", (GCallback) source_removed, NULL);

	source1 = g_object_new(nop_source_get_type(),
			       "uuid", "SomeSource",
			       "name", "nop",
			       NULL);
	source2 = g_object_new(nop_source_get_type(),
			       "uuid", "SomeSource2",
			       "name", "nop",
			       NULL);

	/* Add a source */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(source1));

	/* Get sources */
	sources = mafw_registry_get_sources(reg);
	fail_unless(g_list_length(sources) == 1, "Sources list size wrong\n");

	/* Remove the source (which shouldn't exist in the registry */
	expect_assert(mafw_registry_remove_extension(reg, MAFW_EXTENSION(source2)));
	fail_unless(source_removed_ok == FALSE, 
		    "Shouldn't signal non-existing source removal\n");

	sources = mafw_registry_get_sources(reg);
	fail_unless(g_list_length(sources) == 1, "Sources list size wrong\n");

	g_object_unref(reg);
}
예제 #20
0
static void
state_changed_cb(MafwRenderer *renderer,
                 MafwPlayState state,
                 gpointer user_data)
{
    const gchar  *uuid;
    GtkTreeModel *model;
    GtkTreeIter   iter;

    mtg_print_signal (MAFW_EXTENSION (renderer), "Renderer::state-changed",
                      "state:%s (%d)\n", state_to_string (state), state);

    uuid = mafw_extension_get_uuid(MAFW_EXTENSION(renderer));

    model = gtk_combo_box_get_model
            (GTK_COMBO_BOX (renderer_combo));
    g_assert (model != NULL);

    if (find_renderer (model, uuid, &iter)) {
        set_state (model, &iter, state);
    }
}
예제 #21
0
/**
 * Called, when the user toggles the mute button. Sets the selected
 * renderer's state according to that
 */
void on_mute_button_toggled(GtkToggleButton *togglebutton, gpointer user_data)
{
	MafwRenderer *renderer = get_selected_renderer();

	if (renderer != NULL) {
		gboolean mute = gtk_toggle_button_get_active(
			GTK_TOGGLE_BUTTON(togglebutton));

		mafw_extension_set_property_boolean(MAFW_EXTENSION(renderer),
                                                    MAFW_PROPERTY_RENDERER_MUTE,
                                                    mute);
	}
}
예제 #22
0
END_TEST START_TEST(test_add_same_source_twice)
{
	MafwRegistry *reg = NULL;
	MafwSource *source = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "source_added", (GCallback) source_added, NULL);

	source = g_object_new(nop_source_get_type(),
			      "uuid", "SomeSource",
			      "name", "nop",
			      NULL);

	/* Add a source */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(source));
	fail_unless(source_added_ok, "Source add failed\n");

	/* Add it again... This should assert */
	expect_assert(mafw_registry_add_extension(reg, MAFW_EXTENSION(source)));
}
예제 #23
0
END_TEST START_TEST(test_add_null_source)
{
	MafwRegistry *reg = NULL;
	MafwSource *source = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "source_added", (GCallback) source_added, NULL);

	/* Add a NULL source. This should assert */
	expect_assert(mafw_registry_add_extension(reg, MAFW_EXTENSION(source)));
}
예제 #24
0
END_TEST
/*****************************************************************************
 * Remove source
 *****************************************************************************/

START_TEST(test_remove_source)
{
	MafwRegistry *reg = NULL;
	MafwSource *source = NULL;
	GList *sources = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "source_removed", (GCallback) source_removed, NULL);

	source = g_object_new(nop_source_get_type(),
			      "uuid", "SomeSource",
			      "name", "nop",
			      NULL);

	/* Add a source */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(source));

	/* Get sources */
	sources = mafw_registry_get_sources(reg);
	fail_unless(g_list_length(sources) == 1, "Sources list size wrong\n");

	/* Remove the source */
	mafw_registry_remove_extension(reg, MAFW_EXTENSION(source));
	fail_unless(source_removed_ok, "Source remove failed\n");

	sources = mafw_registry_get_sources(reg);
	fail_unless(g_list_length(sources) == 0, 
		    "Sources list size wrong after remove\n");

	g_object_unref(reg);
}
예제 #25
0
END_TEST

START_TEST(test_remove_non_existing_renderer)
{
	MafwRegistry *reg = NULL;
	MafwRenderer *renderer1 = NULL;
	MafwRenderer *renderer2 = NULL;
	GList *renderers = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "renderer_removed", (GCallback) renderer_removed, NULL);

	renderer1 = MAFW_RENDERER(g_object_new(nop_renderer_get_type(), "uuid", "SomeRenderer",
				       NULL));
	renderer2 = MAFW_RENDERER(g_object_new(nop_renderer_get_type(), "uuid", "SomeRenderer2",
				       NULL));

	/* Add a renderer */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer1));

	/* Get renderers */
	renderers = mafw_registry_get_renderers(reg);
	fail_unless(g_list_length(renderers) == 1, "Renderers list size wrong\n");

	/* Remove the renderer (which shouldn't exist in the registry */
	expect_assert(mafw_registry_remove_extension(reg, MAFW_EXTENSION(renderer2)));
	fail_unless(renderer_removed_ok == FALSE, 
		    "Shouldn't signal non-existing renderer removal\n");

	renderers = mafw_registry_get_renderers(reg);
	fail_unless(g_list_length(renderers) == 1, "Renderers list size wrong\n");

	g_object_unref(reg);
}
예제 #26
0
END_TEST 

START_TEST(test_remove_null_renderer)
{
	MafwRegistry *reg = NULL;
	MafwRenderer *renderer = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "renderer_removed", (GCallback) renderer_removed, NULL);

	/* Add a NULL renderer. This should assert */
	expect_assert(mafw_registry_remove_extension(reg, MAFW_EXTENSION(renderer)));
}
예제 #27
0
static void renderer_metadata_changed_cb(MafwRenderer *self, const gchar *key,
        GValueArray *value)
{
    gint i;
    for (i = 0; i < value->n_values; i++)
    {
        gchar* contents = g_strdup_value_contents (&(value->values[i]));
        mtg_print_signal (MAFW_EXTENSION (self),
                          "Renderer::metadata-changed",
                          "Key: %s, Value:%s\n", key, contents);
        g_free (contents);
    }

    mdata_view_update(key, value);
}
예제 #28
0
END_TEST 

/*****************************************************************************
 * Get renderers
 *****************************************************************************/
/* TODO... */

START_TEST(test_get_renderer_by_uuid)
{
	MafwRegistry *reg = NULL;
	MafwRenderer *renderer = NULL;
	MafwRenderer *renderer_by_uuid = NULL;

	reg = g_object_new(MAFW_TYPE_REGISTRY, NULL);
	fail_unless(reg != NULL, "Object construction failed");

	g_signal_connect(reg, "renderer_added", (GCallback) renderer_added, NULL);

	renderer = g_object_new(nop_renderer_get_type(),
			    "name", "test_renderer_name",
			    "uuid", "test_renderer_uuid",
			    NULL);

	/* Get renderer by uuid when it doesn't exist */
	renderer_by_uuid = MAFW_RENDERER(
		mafw_registry_get_extension_by_uuid(reg, "test_renderer_uuid"));
	fail_unless(renderer_by_uuid == NULL, 
		    "There was not supposed to be any renderer with the uuid\n");

	/* Add a renderer */
	mafw_registry_add_extension(reg, MAFW_EXTENSION(renderer));
	fail_unless(renderer_added_ok, "Renderer add failed\n");

	/* Get renderer by uuid */
	renderer_by_uuid = MAFW_RENDERER(mafw_registry_get_extension_by_uuid(reg, "test_renderer_uuid"));
	fail_unless(renderer_by_uuid != NULL, "Get renderer by uuid failed\n");

	/* Get renderer by uuid when it doesn't exist */
	renderer_by_uuid = MAFW_RENDERER(mafw_registry_get_extension_by_uuid(reg, "wrong_renderer_uuid"));
	fail_unless(renderer_by_uuid == NULL, 
		    "There was not supposed to be any renderer with the uuid\n");

	/* Get renderer by NULL uuid */
	expect_fallback(mafw_registry_get_extension_by_uuid(reg, NULL), NULL);

	g_object_unref(reg);
} END_TEST
예제 #29
0
static void
on_renderer_combo_changed (GtkComboBox *widget,
                           gpointer     user_data)
{
    GtkComboBox  *combo;
    GtkTreeModel *model;
    GtkTreeIter   iter;
    MafwPlayState state;
    guint         volume;

    combo = GTK_COMBO_BOX (renderer_combo);
    model = gtk_combo_box_get_model (combo);
    g_assert (model != NULL);

    if (!gtk_combo_box_get_active_iter (combo, &iter)) {
        selected_renderer = NULL;
        return;
    }

    if (selected_renderer != NULL) {
        stop();
    }

    gtk_tree_model_get (model, &iter,
                        RENDERER_COMBO_COLUMN_RENDERER, &selected_renderer,
                        RENDERER_COMBO_COLUMN_STATE, &state,
                        RENDERER_COMBO_COLUMN_VOLUME, &volume,
                        -1);

    set_volume_vscale (volume);
    prepare_controls_for_state (state);
    update_mute_button();

    if (selected_renderer != NULL) {
        /* Get the selected renderer's playlist */
        mafw_renderer_get_status(selected_renderer,
                                 selected_renderer_status_cb,
                                 NULL);
        set_selected_renderer_xid (get_metadata_visual_xid ());
        mafw_extension_get_property(MAFW_EXTENSION(selected_renderer),
                                    "current-frame-on-pause",
                                    fop_status_cb, NULL);
    }
}
예제 #30
0
void
set_selected_renderer_xid (XID xid)
{
    GValue value = { 0 };


    if (xid == cur_xid || !selected_renderer)
        return;

    cur_xid = xid;

    /* Set the visual widget's XID to the selected renderer for
         * playing video */
    g_value_init (&value, G_TYPE_UINT);
    g_value_set_uint (&value, xid);
    mafw_extension_set_property (MAFW_EXTENSION (selected_renderer),
                                 "xid",
                                 &value);
}