[gthumb] slideshow: avoid a double BUTTON_PRESS emission that seems to be a Clutter bug
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] slideshow: avoid a double BUTTON_PRESS emission that seems to be a Clutter bug
- Date: Mon, 4 Jul 2011 22:53:38 +0000 (UTC)
commit df9269602c6820949709962672c666b55f35f6e0
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue Jul 5 00:52:36 2011 +0200
slideshow: avoid a double BUTTON_PRESS emission that seems to be a Clutter bug
extensions/slideshow/gth-slideshow.c | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/extensions/slideshow/gth-slideshow.c b/extensions/slideshow/gth-slideshow.c
index fd8ee68..8bf80f0 100644
--- a/extensions/slideshow/gth-slideshow.c
+++ b/extensions/slideshow/gth-slideshow.c
@@ -62,6 +62,7 @@ struct _GthSlideshowPrivate {
ClutterActor *image1;
ClutterActor *image2;
ClutterActor *paused_actor;
+ guint32 last_button_event_time;
#endif
GdkPixbuf *current_pixbuf;
GtkWidget *viewer;
@@ -98,6 +99,7 @@ _gth_slideshow_close (GthSlideshow *self)
browser = self->priv->browser;
close_browser = ! gtk_widget_get_visible (GTK_WIDGET (browser));
+ self->priv->projector->finalize (self);
gtk_widget_destroy (GTK_WIDGET (self));
if (close_browser)
@@ -313,7 +315,6 @@ gth_slideshow_finalize (GObject *object)
_g_object_list_unref (self->priv->transitions);
g_rand_free (self->priv->rand);
g_strfreev (self->priv->audio_files);
- self->priv->projector->finalize (self);
#if HAVE_GSTREAMER
if (self->priv->playbin != NULL) {
@@ -1039,6 +1040,15 @@ stage_input_cb (ClutterStage *stage,
self->priv->hide_cursor_event = g_timeout_add (HIDE_CURSOR_DELAY, hide_cursor_cb, self);
}
else if (event->type == CLUTTER_BUTTON_PRESS) {
+ guint32 event_time;
+
+ /* avoid a double button_press emission that seems to be a
+ * clutter bug */
+ event_time = ((ClutterButtonEvent *)event)->time;
+ if (self->priv->last_button_event_time == event_time)
+ return;
+ self->priv->last_button_event_time = event_time;
+
switch (clutter_event_get_button (event)) {
case 1:
_gth_slideshow_load_next_image (self);
@@ -1168,6 +1178,8 @@ clutter_projector_construct (GthSlideshow *self)
self->stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (embed));
clutter_stage_hide_cursor (CLUTTER_STAGE (self->stage));
clutter_stage_set_color (CLUTTER_STAGE (self->stage), &background_color);
+
+ self->priv->last_button_event_time = 0;
g_signal_connect (self->stage, "button-press-event", G_CALLBACK (stage_input_cb), self);
g_signal_connect (self->stage, "motion-event", G_CALLBACK (stage_input_cb), self);
g_signal_connect (self->stage, "key-press-event", G_CALLBACK (stage_input_cb), self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]