diff options
Diffstat (limited to 'src/cheese-stage.c')
| -rw-r--r-- | src/cheese-stage.c | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/cheese-stage.c b/src/cheese-stage.c index 376acff..489df63 100644 --- a/src/cheese-stage.c +++ b/src/cheese-stage.c @@ -35,7 +35,7 @@ static GstBusSyncReply create_window (GstBus * bus, GstMessage * message, gpointer data) { - CheeseActor **actor = (CheeseActor **) data; + CheeseGrid *layout = CHEESE_GRID (data); static gint count = 0; static GMutex *mutex = NULL; Window win; @@ -51,13 +51,10 @@ create_window (GstBus * bus, GstMessage * message, gpointer data) g_mutex_lock (mutex); - if (count < N_ACTORS) { - g_object_get (G_OBJECT (actor[count]), "window", &win, NULL); - g_message ("adding actor: %d win: %ld", count, win); - gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)), - win); - count++; - } + ClutterActor *actor = cheese_grid_get_actor_for_sink (layout, GST_MESSAGE_SRC (message)); + g_object_get (G_OBJECT (actor), "window", &win, NULL); + gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)), + win); g_mutex_unlock (mutex); @@ -181,6 +178,8 @@ main (int argc, char *argv[]) g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); + gtk_window_set_default_size (GTK_WINDOW (window), DEFAULT_W*3, DEFAULT_H*3); + clutter = gtk_clutter_embed_new (); gtk_container_add (GTK_CONTAINER (window), clutter); @@ -197,21 +196,6 @@ main (int argc, char *argv[]) G_CALLBACK (on_window_configure), layout); - for (i = 0; i < N_ACTORS; i++) { - actor[i] = cheese_texture_new (); - clutter_actor_set_scale_with_gravity (actor[i], 1.0, 1.0, - CLUTTER_GRAVITY_CENTER); - clutter_container_add_actor (CLUTTER_CONTAINER (layout), actor[i]); - clutter_actor_set_reactive (actor[i], TRUE); - g_signal_connect (actor[i], "button-press-event", G_CALLBACK (on_button_animate), NULL); -// g_signal_connect (actor[i], "enter-event", G_CALLBACK (on_enter_animate), NULL); -// g_signal_connect (actor[i], "leave-event", G_CALLBACK (on_leave_animate), NULL); - if (xpos > (COLS - 1) * W) { - xpos = 0; - ypos += H + 1; - } else - xpos += W + 1; - } /* desc = g_strdup_printf ("v4l2src ! " "video/x-raw-rgb, width=320, height=240, framerate=30/1 ! " "videoscale ! " @@ -251,6 +235,17 @@ main (int argc, char *argv[]) gst_bin_add_many (GST_BIN (pipeline), queue[i], fx[i], sink[i], NULL); } + for (i = 0; i < N_ACTORS; i++) { + actor[i] = g_object_new (CHEESE_TYPE_ACTOR, "sink", sink[i], NULL); + clutter_actor_set_scale_with_gravity (actor[i], 1.0, 1.0, + CLUTTER_GRAVITY_CENTER); + clutter_container_add_actor (CLUTTER_CONTAINER (layout), actor[i]); + clutter_actor_set_reactive (actor[i], TRUE); + g_signal_connect (actor[i], "button-press-event", G_CALLBACK (on_button_animate), NULL); + } +// g_signal_connect (actor[i], "enter-event", G_CALLBACK (on_enter_animate), NULL); +// g_signal_connect (actor[i], "leave-event", G_CALLBACK (on_leave_animate), NULL); + gst_element_link_many (srcbin, tee, NULL); for (i = 0; i < N_ACTORS; i++) { @@ -262,7 +257,7 @@ main (int argc, char *argv[]) bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); - gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, actor); + gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, layout); gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING); |
