int main (int argc, char *argv[]) { ClutterActor *vtexture; int i; clutter_gst_init (&argc, &argv); for (i = 0; ; i++) { g_debug("VideoTexure #%d", i); vtexture = clutter_gst_video_texture_new(); g_object_ref_sink (vtexture); g_object_unref (vtexture); } return EXIT_SUCCESS; }
static void mex_music_player_init (MexMusicPlayer *self) { GError *error = NULL; ClutterActor *box; MexMusicPlayerPrivate *priv; ClutterActor *button; priv = self->priv = MUSIC_PLAYER_PRIVATE (self); priv->script = clutter_script_new (); clutter_script_load_from_resource (priv->script, "/org/media-explorer/MediaExplorer/json/" "music-player.json", &error); if (error) { g_error (G_STRLOC " %s", error->message); g_clear_error (&error); } box = mex_script_get_actor (priv->script, "box"); g_assert (box); clutter_actor_add_child (CLUTTER_ACTOR (self), box); /* labels */ priv->title_label = mex_script_get_actor (priv->script, "title-label"); priv->subtitle_label = mex_script_get_actor (priv->script, "subtitle-label"); /* play */ priv->play_button = mex_script_get_actor (priv->script, "play-button"); g_signal_connect_swapped (priv->play_button, "clicked", G_CALLBACK (mex_music_player_play_toggle), self); /* next */ button = mex_script_get_actor (priv->script, "next-button"); g_signal_connect_swapped (button, "clicked", G_CALLBACK (mex_music_player_next), self); /* previous */ button = mex_script_get_actor (priv->script, "previous-button"); g_signal_connect_swapped (button, "clicked", G_CALLBACK (mex_music_player_previous), self); /* stop */ button = mex_script_get_actor (priv->script, "stop-button"); g_signal_connect_swapped (button, "clicked", G_CALLBACK (mex_music_player_quit), self); /* repeat */ button = mex_script_get_actor (priv->script, "repeat-button"); g_signal_connect_swapped (button, "notify::toggled", G_CALLBACK (mex_music_player_repeat_toggled), self); button = mex_script_get_actor (priv->script, "shuffle-button"); g_signal_connect_swapped (button, "notify::toggled", G_CALLBACK (mex_music_player_shuffle_toggled), self); /* player */ priv->player = (ClutterMedia *) clutter_gst_video_texture_new (); g_signal_connect (priv->player, "notify", G_CALLBACK (mex_music_player_notify_cb), self); g_signal_connect (priv->player, "eos", G_CALLBACK (mex_music_player_eos_cb), self); /* slider */ priv->slider = mex_script_get_actor (priv->script, "progress-slider"); priv->slider_notify_id = g_signal_connect (priv->slider, "notify::value", G_CALLBACK (mex_music_player_slider_notify), self); g_signal_connect (self, "captured-event", G_CALLBACK (mex_music_player_captured_event), NULL); }
static void mex_player_init (MexPlayer *self) { MexPlayerPrivate *priv; self->priv = priv = PLAYER_PRIVATE (self); #ifdef USE_PLAYER_CLUTTER_GST priv->media = (ClutterMedia *) clutter_gst_video_texture_new (); /* We want to keep a reference to the media here to ensure consistency with * the D-BUS client interface behaviour */ g_object_ref_sink (priv->media); clutter_container_add_actor (CLUTTER_CONTAINER (self), CLUTTER_ACTOR (priv->media)); clutter_texture_set_keep_aspect_ratio (CLUTTER_TEXTURE (priv->media), TRUE); clutter_container_child_set (CLUTTER_CONTAINER (self), CLUTTER_ACTOR (priv->media), "fit", TRUE, NULL); /* Use progressive download when possible. Don't enable that yet, the * behaviour of seeking in the non already downloaded part of the stream * is not great. Either disable seeking in that case or find out why.*/ #if 0 video_texture = CLUTTER_GST_VIDEO_TEXTURE (priv->media); clutter_gst_video_texture_set_buffering_mode (video_texture, CLUTTER_GST_BUFFERING_MODE_DOWNLOAD); #endif #else #ifdef USE_PLAYER_DBUS priv->media = (ClutterMedia *) mex_player_client_new (); #else #ifdef USE_PLAYER_SURFACE priv->media = (ClutterMedia *) mex_surface_player_new (); #else #error Unexpected player setup #endif #endif #endif g_signal_connect (priv->media, "eos", G_CALLBACK (media_eos_cb), self); g_signal_connect (priv->media, "notify::playing", G_CALLBACK (media_playing_cb), self); g_signal_connect (priv->media, "notify::progress", G_CALLBACK (media_update_progress), self); #if defined(USE_PLAYER_SURFACE) || defined (USE_PLAYER_CLUTTER_GST) { GError *error = NULL; priv->bridge = mex_media_dbus_bridge_new (priv->media); if (!mex_media_dbus_bridge_register (priv->bridge, &error)) { g_warning (G_STRLOC ": Error registering player on D-BUS"); g_clear_error (&error); } } #endif /* add info panel */ priv->info_panel = mex_info_panel_new (MEX_INFO_PANEL_MODE_FULL); mx_widget_set_disabled (MX_WIDGET (priv->info_panel), TRUE); clutter_container_add_actor (CLUTTER_CONTAINER (self), priv->info_panel); clutter_container_child_set (CLUTTER_CONTAINER (self), priv->info_panel, "y-fill", FALSE, "y-align", MX_ALIGN_END, NULL); clutter_actor_set_opacity (priv->info_panel, 0); /* add media controls */ priv->controls = mex_media_controls_new (); g_signal_connect (priv->controls, "stopped", G_CALLBACK (controls_stopped_cb), self); mex_media_controls_set_media (MEX_MEDIA_CONTROLS (priv->controls), priv->media); clutter_container_add_actor (CLUTTER_CONTAINER (self), priv->controls); clutter_container_child_set (CLUTTER_CONTAINER (self), priv->controls, "y-fill", FALSE, "y-align", MX_ALIGN_END, NULL); priv->screensaver = mex_screensaver_new (); /* start in idle mode */ mex_player_set_idle_mode (MEX_PLAYER (self), TRUE); }
int main (int argc, char *argv[]) { ClutterActor *video; /* So we can fade out at the end. */ clutter_x11_set_use_argb_visual (TRUE); if (clutter_gst_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) return EXIT_FAILURE; if (argc < 2) { g_print ("Usage: %s [OPTIONS] <video file>\n", argv[0]); return EXIT_FAILURE; } if (!clutter_color_from_string (&bg_color, BG_COLOR)) { g_warning ("Invalid BG_COLOR"); exit (1); } stage = clutter_stage_new (); /* Clutter's full-screening code does not allow us to * set both that and _NET_WM_STATE_ABOVE, so do the state * management ourselves for now. */ #if 0 clutter_stage_set_fullscreen (CLUTTER_STAGE (stage), TRUE); #endif /* Clutter will set maximum size restrictions (meaning not * full screen) unless I set this. */ clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), TRUE); clutter_stage_set_use_alpha (CLUTTER_STAGE (stage), TRUE); clutter_actor_set_background_color (stage, &bg_color); clutter_actor_set_layout_manager (stage, clutter_bin_layout_new (CLUTTER_BIN_ALIGNMENT_FIXED, CLUTTER_BIN_ALIGNMENT_FIXED)); clutter_actor_realize (stage); set_above_and_fullscreen (); video = clutter_gst_video_texture_new (); clutter_actor_set_x_expand (video, TRUE); clutter_actor_set_y_expand (video, TRUE); clutter_actor_set_x_align (video, CLUTTER_ACTOR_ALIGN_CENTER); clutter_actor_set_y_align (video, CLUTTER_ACTOR_ALIGN_CENTER); set_idle_material (CLUTTER_GST_VIDEO_TEXTURE (video)); g_signal_connect (video, "eos", G_CALLBACK (on_video_texture_eos), NULL); g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL); clutter_media_set_filename (CLUTTER_MEDIA (video), argv[1]); clutter_stage_hide_cursor (CLUTTER_STAGE (stage)); clutter_actor_add_child (stage, video); g_signal_connect (stage, "key-press-event", G_CALLBACK (key_press_cb), NULL); clutter_media_set_playing (CLUTTER_MEDIA (video), TRUE); clutter_actor_show (stage); clutter_main (); return EXIT_SUCCESS; }
static int mp_constructor(TPMediaPlayer * mp) { static int init=0; if (!init) { init=1; gst_init(NULL,NULL); } ClutterActor * video_texture=clutter_gst_video_texture_new(); if (!video_texture) { g_warning("FAILED TO CREATE CLUTTER GST VIDEO TEXTURE"); return TP_MEDIAPLAYER_ERROR_NO_MEDIAPLAYER; } // We own it g_object_ref_sink(G_OBJECT(video_texture)); // Get the stage, size the video texture and add it to the stage clutter_actor_hide(video_texture); ClutterActor * stage=clutter_stage_get_default(); gfloat width,height; clutter_actor_get_size(stage,&width,&height); clutter_actor_set_size(video_texture,width,height); clutter_actor_set_position(video_texture,0,0); clutter_container_add_actor(CLUTTER_CONTAINER(stage),video_texture); clutter_actor_lower_bottom(video_texture); g_signal_connect( stage , "notify::allocation" , ( GCallback ) stage_allocation_notify , video_texture ); // Connect signals g_signal_connect(video_texture,"eos",G_CALLBACK(mp_end_of_stream),mp); g_signal_connect(video_texture,"error",G_CALLBACK(mp_error),mp); // We use gmalloc0 to zero out the whole structure UserData * user_data=(UserData*) g_malloc0(sizeof(UserData)); user_data->vt=video_texture; mp->user_data=user_data; mp->destroy=mp_destroy; mp->load=mp_load; mp->reset=mp_reset; mp->play=mp_play; mp->seek=mp_seek; mp->pause=mp_pause; mp->set_playback_rate=mp_set_playback_rate; mp->get_position=mp_get_position; mp->get_duration=mp_get_duration; mp->get_buffered_duration=mp_get_buffered_duration; mp->get_video_size=mp_get_video_size; mp->get_viewport_geometry=mp_get_viewport_geometry; mp->set_viewport_geometry=mp_set_viewport_geometry; mp->get_media_type=mp_get_media_type; mp->get_audio_volume=mp_get_audio_volume; mp->set_audio_volume=mp_set_audio_volume; mp->get_audio_mute=mp_get_audio_mute; mp->set_audio_mute=mp_set_audio_mute; mp->play_sound=mp_play_sound; mp->get_viewport_texture=mp_get_viewport_texture; return 0; }
static void _gb_player_setup_widgets (GbPlayer *self) { GbPlayerPrivate *p = GB_PLAYER_GET_PRIVATE(self); ClutterColor cc_white = {0xff, 0xff, 0xff, 0x8f}; ClutterColor cc_black = {0x00, 0x00, 0x00, 0xff}; /* title group */ p->title_group = clutter_group_new (); p->title_rect = gb_player_rounded_rect (self, 400, 36, &cc_white, 35); p->title_label = clutter_label_new_full ("DejaVu Sans", "<span size='11500'><b>Here comes the media's title</b></span>", &cc_black); clutter_label_set_use_markup (CLUTTER_LABEL(p->title_label), TRUE); clutter_actor_set_position (p->title_group, -20, 20); clutter_actor_set_position (p->title_label, 50, 10); CLUTTER_GROUP_AND_SHOW(p->title_group, p->title_rect); CLUTTER_GROUP_AND_SHOW(p->title_group, p->title_label); /* window buttons group */ p->window_buttons_group = clutter_group_new (); p->window_buttons_rect = gb_player_rounded_rect (self, 230, 90, &cc_white, 35); p->window_aspect_button = clutter_texture_new_from_pixbuf (p->fullscreen); p->window_open_file_button = clutter_texture_new_from_pixbuf (p->open_file); clutter_label_set_use_markup (CLUTTER_LABEL(p->title_label), TRUE); CLUTTER_GROUP_AND_SHOW(p->window_buttons_group, p->window_buttons_rect); CLUTTER_GROUP_AND_SHOW(p->window_buttons_group, p->window_aspect_button); CLUTTER_GROUP_AND_SHOW(p->window_buttons_group, p->window_open_file_button); clutter_actor_set_position (p->window_buttons_group, 640 - 200, 20); clutter_actor_set_position (p->window_open_file_button, 40, 20); clutter_actor_set_position (p->window_aspect_button, 130, 20); /* background group*/ p->bg_group = clutter_group_new (); p->bg_video = clutter_gst_video_texture_new (); p->bg_image = clutter_texture_new_from_pixbuf (p->bgpixbuf); p->bg_logo = clutter_texture_new_from_pixbuf (p->bglogo); CLUTTER_GROUP_AND_SHOW(p->bg_group, p->bg_image); CLUTTER_GROUP_AND_SHOW(p->bg_group, p->bg_logo); CLUTTER_GROUP_AND_SHOW(p->bg_group, p->bg_video); clutter_actor_set_position (p->bg_logo, (640 / 2) - (467 / 2), (480 / 2) - (210 / 2)); clutter_actor_set_size (p->bg_video, 640, 480); /* controls group */ p->controls_group = clutter_group_new (); p->controls_rect = gb_player_rounded_rect (self, 400, 70, &cc_white, 45); p->controls_backward = clutter_texture_new_from_pixbuf (p->backward); p->controls_forward = clutter_texture_new_from_pixbuf (p->forward); p->controls_play_pause = clutter_texture_new_from_pixbuf (p->play); p->controls_stop = clutter_texture_new_from_pixbuf (p->stop); CLUTTER_GROUP_AND_SHOW(p->controls_group, p->controls_rect); CLUTTER_GROUP_AND_SHOW(p->controls_group, p->controls_backward); CLUTTER_GROUP_AND_SHOW(p->controls_group, p->controls_forward); CLUTTER_GROUP_AND_SHOW(p->controls_group, p->controls_play_pause); clutter_actor_set_position (p->controls_group, (640 / 2) - (400 / 2), 480 - 70 - 30); clutter_actor_set_position (p->controls_backward, 30, 15); clutter_actor_set_position (p->controls_play_pause, 170, 5); clutter_actor_set_position (p->controls_forward, 300, 15); CLUTTER_GROUP_AND_SHOW(p->stage, p->bg_group); CLUTTER_GROUP_AND_SHOW(p->stage, p->title_group); CLUTTER_GROUP_AND_SHOW(p->stage, p->controls_group); CLUTTER_GROUP_AND_SHOW(p->stage, p->window_buttons_group); gtk_widget_show_all (p->window); clutter_actor_set_reactive (p->controls_backward, TRUE); clutter_actor_set_reactive (p->controls_forward, TRUE); clutter_actor_set_reactive (p->controls_play_pause, TRUE); clutter_actor_set_reactive (p->window_aspect_button, TRUE); clutter_actor_set_reactive (p->window_open_file_button, TRUE); clutter_actor_set_reactive (p->stage, TRUE); clutter_actor_hide (p->bg_video); p->videosink = clutter_gst_video_sink_new (CLUTTER_TEXTURE(p->bg_video)); g_object_set (p->player, "video-sink", p->videosink, NULL); }
static gboolean _start_video_preview (MexContentTile *self) { MexContentTilePrivate *priv = self->priv; GstElement *pipeline; gint gst_flags; const gchar *mimetype, *uri; /* Check we're still focused */ if (!mex_actor_has_focus (CLUTTER_ACTOR (self))) return FALSE; /* Don't play if the main player is still playing.. * too many videos spoil the broth. */ if (clutter_media_get_playing (mex_player_get_clutter_media (mex_player_get_default ()))) return FALSE; mimetype = mex_content_get_metadata (priv->content, MEX_CONTENT_METADATA_MIMETYPE); if ((mimetype) && strncmp (mimetype, "video/", 6) != 0) return FALSE; if (!(uri = mex_content_get_metadata (priv->content, MEX_CONTENT_METADATA_STREAM))) return FALSE; priv->video_preview = clutter_gst_video_texture_new (); pipeline = clutter_gst_video_texture_get_pipeline (CLUTTER_GST_VIDEO_TEXTURE (priv->video_preview)); g_object_get (G_OBJECT (pipeline), "flags", &gst_flags, NULL); gst_flags = 1;//GST_PLAY_FLAG_VIDEO; g_object_set (G_OBJECT (pipeline), "flags", gst_flags, NULL); clutter_gst_video_texture_set_idle_material (CLUTTER_GST_VIDEO_TEXTURE (priv->video_preview), NULL); g_signal_connect (priv->video_preview, "eos", G_CALLBACK (_stop_video_eos), self); clutter_actor_set_opacity (priv->video_preview, 0); g_object_ref (priv->image); clutter_actor_remove_child (CLUTTER_ACTOR (self), priv->image); clutter_actor_add_child (CLUTTER_ACTOR (self), priv->video_preview); clutter_actor_animate (priv->video_preview, CLUTTER_LINEAR, 500, "opacity", 0xff, NULL); clutter_actor_set_size (priv->video_preview, (gfloat)priv->thumb_width, (gfloat)priv->thumb_height); clutter_media_set_uri (CLUTTER_MEDIA (priv->video_preview), uri); clutter_media_set_playing (CLUTTER_MEDIA (priv->video_preview), TRUE); if (priv->stop_video_preview <= 0) priv->stop_video_preview = g_timeout_add_seconds (180, (GSourceFunc)_stop_video_preview, self); return FALSE; }
int main (int argc, char *argv[]) { ClutterActor *video; GdkPixbuf *shot = NULL; gint duration; CoglHandle tex_id; CoglPixelFormat format; gint size; gint width; gint height; gint rowstride; guchar *data = NULL; #ifdef USE_HELIX clutter_helix_init (&argc, &argv); #else gst_init (&argc, &argv); #endif clutter_init (&argc, &argv); if (argc < 3) { g_print ("Usage: %s <path to movie file> <output png>\n", argv[0]); exit(-1); } totem_resources_monitor_start (argv[1], 60 * G_USEC_PER_SEC); #ifdef USE_HELIX video = clutter_helix_video_texture_new (); #else video = clutter_gst_video_texture_new (); #endif if (argv[1][0] == '/') clutter_media_set_filename(CLUTTER_MEDIA(video), argv[1]); else clutter_media_set_uri(CLUTTER_MEDIA(video), argv[1]); clutter_media_set_volume (CLUTTER_MEDIA(video), 0); clutter_media_set_playing (CLUTTER_MEDIA(video), TRUE); do { while (g_main_context_pending (NULL)) g_main_context_iteration (NULL, FALSE); duration = clutter_media_get_duration (CLUTTER_MEDIA(video)); } while (duration == 0); clutter_actor_realize (video); clutter_media_set_position (CLUTTER_MEDIA(video), duration/3); do { while (g_main_context_pending (NULL)) g_main_context_iteration (NULL, FALSE); } while (clutter_media_get_position (CLUTTER_MEDIA(video)) <= duration/3); tex_id = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (video)); if (tex_id) { format = cogl_texture_get_format (tex_id); size = cogl_texture_get_data (tex_id, format, 0, NULL); width = cogl_texture_get_width (tex_id); height = cogl_texture_get_height (tex_id); rowstride = cogl_texture_get_rowstride (tex_id); data = (guchar*) g_malloc (sizeof(guchar) * size); if (!data) g_error ("malloc");; cogl_texture_get_data (tex_id, format, rowstride, data); shot = gdk_pixbuf_new_from_data (data, GDK_COLORSPACE_RGB, FALSE, 8, width, height, rowstride, NULL, NULL); } totem_resources_monitor_stop (); if (shot) { GdkPixbuf *thumb, *pic; gint x, y, nw, nh, w, h, size; size = 128; /* FIXME swap RGB pixels */ w = clutter_actor_get_width (video); h = clutter_actor_get_height (video); nh = ( h * size) / w; if (nh <= size) { nw = size; x = 0; y = (size - nh) / 2; } else { nw = ( w * size ) / h; nh = size; x = (size - nw) / 2; y = 0; } thumb = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, size, size); gdk_pixbuf_fill (thumb, 0x000000FF); pic = gdk_pixbuf_scale_simple (shot, nw, nh, GDK_INTERP_BILINEAR); gdk_pixbuf_copy_area (pic, 0, 0, nw, nh, thumb, x, y); if (!gdk_pixbuf_save (thumb, argv[2], "png", NULL, NULL)) { g_error ("%s: Pixbuf save failed\n", argv[0]); exit(-1); } g_object_unref (shot); g_object_unref (thumb); g_object_unref (pic); exit(0); } exit (-1); }
HandCar * handcar_new() { HandCar *all = g_new0(HandCar, 1); ClutterColor rect_color = { 0xdd, 0xdd, 0xdd, 0xee }; ClutterColor rect_border_color = { 0xee, 0xee, 0xee, 0xdd }; ClutterColor rect_entry_color = { 0xef, 0xef, 0xef, 0xee }; ClutterColor rect_entry_border_color = { 0x96, 0x96, 0x96, 0xaa }; ClutterColor label_color = { 0x55, 0x00, 0x00, 0xff }; ClutterColor time_color = { 0x00, 0x33, 0x55, 0xbb }; GError *error = NULL; all->play = gdk_pixbuf_new_from_file("imgs/start.svg", NULL); all->previous = gdk_pixbuf_new_from_file("imgs/backward.svg", NULL); all->next = gdk_pixbuf_new_from_file("imgs/forward.svg", NULL); all->stop = gdk_pixbuf_new_from_file("imgs/stop.svg", NULL); all->time = 0; all->playing = FALSE; all->player = gst_element_factory_make ("playbin", "player"); if (error) g_error ("FUDEU: %s", error->message); all->label_actor = clutter_label_new_full("DejaVu Sans", "Blind Guardian - <b>Mirror Mirror</b>", &label_color); clutter_label_set_use_markup (CLUTTER_LABEL(all->label_actor), TRUE); all->label_time = clutter_label_new_full("DejaVu Sans", "00:00", &time_color); clutter_label_set_use_markup (CLUTTER_LABEL(all->label_time), TRUE); clutter_actor_set_position (all->label_actor, 10, 15); clutter_actor_set_position (all->label_time, STAGE_WIDTH - 80, STAGE_HEIGHT - 20); all->btn_actor_play = clutter_texture_new_from_pixbuf (all->play); all->btn_actor_next = clutter_texture_new_from_pixbuf (all->next); all->btn_actor_previous = clutter_texture_new_from_pixbuf (all->previous); clutter_actor_set_position (all->btn_actor_previous, 60, 50); clutter_actor_set_position (all->btn_actor_play, 140, 50); clutter_actor_set_position (all->btn_actor_next, 200, 50); all->rect1 = clutter_rectangle_new_with_color (&rect_color); clutter_actor_set_size (all->rect1, 320, 30); clutter_actor_set_position (all->rect1, -5, 10); clutter_rectangle_set_border_width (CLUTTER_RECTANGLE(all->rect1), 4); clutter_rectangle_set_border_color (CLUTTER_RECTANGLE(all->rect1), &rect_border_color); all->rect2 = clutter_rectangle_new_with_color (&rect_entry_color); clutter_actor_set_size (all->rect2, 270, 20); clutter_actor_set_position (all->rect2, 20, STAGE_HEIGHT - 50); clutter_rectangle_set_border_width (CLUTTER_RECTANGLE(all->rect2), 1); clutter_rectangle_set_border_color (CLUTTER_RECTANGLE(all->rect2), &rect_entry_border_color); all->rect3 = clutter_rectangle_new_with_color (&rect_entry_color); clutter_actor_set_size (all->rect3, 270, 203); clutter_actor_set_position (all->rect3, 20, 120); clutter_rectangle_set_border_width (CLUTTER_RECTANGLE(all->rect3), 1); clutter_rectangle_set_border_color (CLUTTER_RECTANGLE(all->rect3), &rect_entry_border_color); all->entry_actor = clutter_entry_new_full ("Monospace", "Teste", &label_color); clutter_actor_set_size (all->entry_actor, 270, 20); clutter_actor_set_position (all->entry_actor, 20, STAGE_HEIGHT - 50); all->video = clutter_gst_video_texture_new (); clutter_actor_set_size (all->video, 270, 203); clutter_actor_set_position (all->video, 20, 120); clutter_actor_set_opacity (all->video, 0xff); // all->clutter_group_add_many (all->container1, all->rect1); all->videosink = clutter_gst_video_sink_new (CLUTTER_TEXTURE(all->video)); g_object_set (all->player, "video-sink", all->videosink, NULL); all->format = GST_FORMAT_TIME; clutter_actor_show(all->btn_actor_play); clutter_actor_show(all->btn_actor_next); clutter_actor_show(all->btn_actor_previous); clutter_actor_show(all->label_actor); clutter_actor_show(all->label_time); clutter_actor_show(all->rect1); clutter_actor_show(all->rect2); clutter_actor_show(all->rect3); clutter_actor_show(all->video); clutter_actor_show(all->entry_actor); return all; }