133
static void _gth_slideshow_load_next_image (GthSlideshow *self);
137
preloader_load_ready_cb (GObject *source_object,
138
GAsyncResult *result,
141
GthSlideshow *self = user_data;
142
GthFileData *requested;
147
GError *error = NULL;
149
if (! gth_image_preloader_load_finish (GTH_IMAGE_PRELOADER (source_object),
158
g_clear_error (&error);
159
_gth_slideshow_load_next_image (self);
163
_g_object_unref (self->priv->current_pixbuf);
164
self->priv->current_pixbuf = gth_image_get_pixbuf (image);
166
if (self->priv->current_pixbuf == NULL) {
167
_gth_slideshow_load_next_image (self);
171
self->priv->one_loaded = TRUE;
172
self->priv->projector->image_ready (self, self->priv->current_pixbuf);
174
_g_object_unref (requested);
175
_g_object_unref (image);
180
135
_gth_slideshow_load_current_image (GthSlideshow *self)
246
image_preloader_requested_ready_cb (GthImagePreloader *preloader,
247
GthFileData *requested,
254
GthSlideshow *self = user_data;
257
g_clear_error (&error);
258
_gth_slideshow_load_next_image (self);
262
_g_object_unref (self->priv->current_pixbuf);
263
self->priv->current_pixbuf = gth_image_get_pixbuf (image);
265
if (self->priv->current_pixbuf == NULL) {
266
_gth_slideshow_load_next_image (self);
270
self->priv->one_loaded = TRUE;
271
self->priv->projector->image_ready (self, self->priv->current_pixbuf);
294
276
gth_slideshow_finalize (GObject *object)
296
278
GthSlideshow *self = GTH_SLIDESHOW (object);
466
448
self->priv->random_order = FALSE;
467
449
self->priv->current_pixbuf = NULL;
468
450
self->priv->screensaver = gth_screensaver_new (NULL);
469
self->priv->preloader = gth_image_preloader_new ();
452
self->priv->preloader = gth_image_preloader_new (GTH_LOAD_POLICY_ONE_STEP, 3);
453
g_signal_connect (self->priv->preloader,
455
G_CALLBACK (image_preloader_requested_ready_cb),
739
726
self->priv->paint_paused = FALSE;
741
728
self->priv->viewer = gth_image_viewer_new ();
729
gth_image_viewer_set_black_background (GTH_IMAGE_VIEWER (self->priv->viewer), TRUE);
742
730
gth_image_viewer_hide_frame (GTH_IMAGE_VIEWER (self->priv->viewer));
743
731
gth_image_viewer_set_fit_mode (GTH_IMAGE_VIEWER (self->priv->viewer), GTH_FIT_SIZE);
744
732
gth_image_viewer_set_zoom_change (GTH_IMAGE_VIEWER (self->priv->viewer), GTH_ZOOM_CHANGE_FIT_SIZE);
733
gth_image_viewer_set_transp_type (GTH_IMAGE_VIEWER (self->priv->viewer), GTH_TRANSP_TYPE_BLACK);
745
734
gth_image_viewer_set_zoom_quality (GTH_IMAGE_VIEWER (self->priv->viewer), GTH_ZOOM_QUALITY_LOW);
746
735
gth_image_viewer_add_painter (GTH_IMAGE_VIEWER (self->priv->viewer), default_projector_pause_painter, self);
802
791
clutter_actor_get_size (self->stage, &stage_w, &stage_h);
804
clutter_actor_set_pivot_point (texture, stage_w / 2.0, stage_h / 2.0);
793
clutter_actor_set_anchor_point (texture, 0.0, 0.0);
805
794
clutter_actor_set_opacity (texture, 255);
806
clutter_actor_set_rotation_angle (texture, CLUTTER_X_AXIS, 0.0);
807
clutter_actor_set_rotation_angle (texture, CLUTTER_Y_AXIS, 0.0);
808
clutter_actor_set_rotation_angle (texture, CLUTTER_Z_AXIS, 0.0);
795
clutter_actor_set_rotation (texture,
801
clutter_actor_set_rotation (texture,
807
clutter_actor_set_rotation (texture,
809
813
clutter_actor_set_scale (texture, 1.0, 1.0);
826
830
if ((self->current_image != NULL) && (self->next_image != NULL)) {
827
clutter_actor_set_child_above_sibling (CLUTTER_ACTOR (self->stage), self->current_image, self->next_image);
831
clutter_actor_raise (self->current_image, self->next_image);
828
832
clutter_actor_hide (self->next_image);
885
889
if (self->priv->transition != NULL)
886
890
gth_transition_frame (self->priv->transition,
888
clutter_timeline_get_progress (self->priv->timeline));
892
clutter_alpha_get_alpha (self->priv->alpha));
890
894
if (self->first_frame)
891
895
self->first_frame = FALSE;
1014
1019
clutter_actor_get_size (self->stage, &stage_w, &stage_h);
1015
1020
clutter_actor_set_position (self->priv->paused_actor, stage_w / 2.0, stage_h / 2.0);
1016
clutter_actor_set_pivot_point (self->priv->paused_actor, 0.5, 0.5);
1021
clutter_actor_set_anchor_point_from_gravity (self->priv->paused_actor, CLUTTER_GRAVITY_CENTER);
1017
1022
clutter_actor_set_scale (self->priv->paused_actor, 1.0, 1.0);
1018
1023
clutter_actor_set_opacity (self->priv->paused_actor, 255);
1019
clutter_actor_set_child_above_sibling (CLUTTER_ACTOR (self->stage), self->priv->paused_actor, NULL);
1024
clutter_actor_raise_top (self->priv->paused_actor);
1020
1025
clutter_actor_show (self->priv->paused_actor);
1022
clutter_actor_save_easing_state (self->priv->paused_actor);
1023
clutter_actor_set_easing_mode (self->priv->paused_actor, CLUTTER_LINEAR);
1024
clutter_actor_set_easing_duration (self->priv->paused_actor, 500);
1025
clutter_actor_set_scale (self->priv->paused_actor, 3.0, 3.0);
1026
clutter_actor_set_opacity (self->priv->paused_actor, 0);
1027
clutter_actor_restore_easing_state (self->priv->paused_actor);
1027
clutter_actor_animate (self->priv->paused_actor,
1028
CLUTTER_LINEAR, 500,
1177
1182
embed = gtk_clutter_embed_new ();
1178
1183
self->stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (embed));
1179
1184
clutter_stage_hide_cursor (CLUTTER_STAGE (self->stage));
1180
clutter_actor_set_background_color (CLUTTER_ACTOR (self->stage), &background_color);
1185
clutter_stage_set_color (CLUTTER_STAGE (self->stage), &background_color);
1182
1187
self->priv->last_button_event_time = 0;
1183
1188
g_signal_connect (self->stage, "button-press-event", G_CALLBACK (stage_input_cb), self);
1188
1193
self->priv->image1 = gtk_clutter_texture_new ();
1189
1194
clutter_actor_hide (self->priv->image1);
1190
clutter_actor_add_child (CLUTTER_ACTOR (self->stage), self->priv->image1);
1195
clutter_container_add_actor (CLUTTER_CONTAINER (self->stage), self->priv->image1);
1192
1197
self->priv->image2 = gtk_clutter_texture_new ();
1193
1198
clutter_actor_hide (self->priv->image2);
1194
clutter_actor_add_child (CLUTTER_ACTOR (self->stage), self->priv->image2);
1199
clutter_container_add_actor (CLUTTER_CONTAINER (self->stage), self->priv->image2);
1196
1201
self->current_image = NULL;
1197
1202
self->next_image = self->priv->image1;
1199
1204
self->priv->timeline = clutter_timeline_new (GTH_TRANSITION_DURATION);
1200
clutter_timeline_set_progress_mode (self->priv->timeline, CLUTTER_EASE_IN_OUT_SINE);
1201
1205
g_signal_connect (self->priv->timeline, "completed", G_CALLBACK (animation_completed_cb), self);
1202
1206
g_signal_connect (self->priv->timeline, "new-frame", G_CALLBACK (animation_frame_cb), self);
1203
1207
g_signal_connect (self->priv->timeline, "started", G_CALLBACK (animation_started_cb), self);
1209
self->priv->alpha = clutter_alpha_new_full (self->priv->timeline, CLUTTER_EASE_IN_OUT_SINE);
1205
1211
self->priv->paused_actor = gtk_clutter_texture_new ();
1206
1212
if (self->priv->pause_pixbuf != NULL)
1207
1213
gtk_clutter_texture_set_from_pixbuf (GTK_CLUTTER_TEXTURE (self->priv->paused_actor),
1208
1214
self->priv->pause_pixbuf,
1211
gtk_clutter_texture_set_from_icon_name (GTK_CLUTTER_TEXTURE (self->priv->paused_actor),
1213
"media-playback-pause-symbolic",
1214
GTK_ICON_SIZE_DIALOG,
1217
gtk_clutter_texture_set_from_stock (GTK_CLUTTER_TEXTURE (self->priv->paused_actor),
1219
GTK_STOCK_MEDIA_PAUSE,
1220
GTK_ICON_SIZE_DIALOG,
1216
1222
clutter_actor_hide (self->priv->paused_actor);
1217
clutter_actor_add_child (CLUTTER_ACTOR (self->stage), self->priv->paused_actor);
1223
clutter_container_add_actor (CLUTTER_CONTAINER (self->stage), self->priv->paused_actor);
1219
1225
g_signal_connect (self, "size-allocate", G_CALLBACK (gth_slideshow_size_allocate_cb), self);