[gimp/wip/animation: 194/197] plug-ins: reorder the render queue when changing playback position.
- From: Jehan Pagès <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/wip/animation: 194/197] plug-ins: reorder the render queue when changing playback position.
- Date: Sat, 7 Oct 2017 03:14:45 +0000 (UTC)
commit b01f53b54c906cfa11353bbd8405c4e78364b825
Author: Jehan <jehan girinstud io>
Date: Thu Aug 17 23:45:59 2017 +0200
plug-ins: reorder the render queue when changing playback position.
plug-ins/animation-play/core/animation-renderer.c | 22 +++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/plug-ins/animation-play/core/animation-renderer.c
b/plug-ins/animation-play/core/animation-renderer.c
index 6450e03..c40b80e 100644
--- a/plug-ins/animation-play/core/animation-renderer.c
+++ b/plug-ins/animation-play/core/animation-renderer.c
@@ -76,6 +76,11 @@ static gboolean animation_renderer_idle_update (AnimationRenderer *renderer);
static void on_proxy_changed (AnimationPlayback *animation,
gdouble ratio,
AnimationRenderer *renderer);
+static void on_playback_position (AnimationPlayback *animation,
+ gint frame_number,
+ GeglBuffer *buffer,
+ gboolean must_draw_null,
+ AnimationRenderer *renderer);
static void on_size_changed (Animation *animation,
gint width,
@@ -429,6 +434,21 @@ on_proxy_changed (AnimationPlayback *playback,
}
static void
+on_playback_position (AnimationPlayback *animation,
+ gint frame_number,
+ GeglBuffer *buffer,
+ gboolean must_draw_null,
+ AnimationRenderer *renderer)
+{
+ gint current_pos;
+
+ current_pos = animation_playback_get_position (renderer->priv->playback);
+ g_async_queue_sort (renderer->priv->queue,
+ (GCompareDataFunc) compare_int_from,
+ GINT_TO_POINTER (current_pos + 1));
+}
+
+static void
on_size_changed (Animation *animation,
gint width,
gint height,
@@ -652,6 +672,8 @@ animation_renderer_new (GObject *playback)
G_CALLBACK (on_animation_loaded), renderer);
g_signal_connect (renderer->priv->playback, "proxy-changed",
G_CALLBACK (on_proxy_changed), renderer);
+ g_signal_connect (renderer->priv->playback, "position",
+ G_CALLBACK (on_playback_position), renderer);
return object;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]