Accepting request 644892 from home:michalsrb:bug1110199:Base:System

- plymouth-throbber-Don-t-skip-last-frame-when-waiting-for-end.patch
  * Make sure plymouthd stops throbber animation at the first
    opportunity after receiving quit command, instead of looping
    multiple times. (boo#1110199)

OBS-URL: https://build.opensuse.org/request/show/644892
OBS-URL: https://build.opensuse.org/package/show/Base:System/plymouth?expand=0&rev=205
This commit is contained in:
Cliff Zhao 2018-10-29 08:53:55 +00:00 committed by Git OBS Bridge
parent 4778a9bf16
commit d27b9a66a2
3 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,49 @@
From 121783eff1759f6089863ec4d3e722e94fe73cdb Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@suse.com>
Date: Tue, 23 Oct 2018 09:10:25 +0200
Subject: [PATCH] throbber: Don't skip last frame when waiting for end.
If the stop_trigger is set and we are waiting for the last frame to stop the
animation, make sure we don't accidentally skip the last frame. It could
happen if the machine is busy and can't keep up with the frames or when the
animation has more than 60 frames (30FPS * 2 seconds).
---
src/libply-splash-graphics/ply-throbber.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/libply-splash-graphics/ply-throbber.c b/src/libply-splash-graphics/ply-throbber.c
index f18feb6..a4311fd 100644
--- a/src/libply-splash-graphics/ply-throbber.c
+++ b/src/libply-splash-graphics/ply-throbber.c
@@ -144,6 +144,7 @@ animate_at_time (ply_throbber_t *throbber,
ply_pixel_buffer_t *const *frames;
bool should_continue;
double percent_in_sequence;
+ int last_frame_number;
number_of_frames = ply_array_get_size (throbber->frames);
@@ -152,11 +153,19 @@ animate_at_time (ply_throbber_t *throbber,
should_continue = true;
percent_in_sequence = fmod (time, THROBBER_DURATION) / THROBBER_DURATION;
+ last_frame_number = throbber->frame_number;
throbber->frame_number = (int) (number_of_frames * percent_in_sequence);
- if (throbber->stop_trigger != NULL)
+ if (throbber->stop_trigger != NULL) {
+ /* If we are trying to stop, make sure we don't skip the last
+ * frame and loop around. Clamp it to the last frame.
+ */
+ if (last_frame_number > throbber->frame_number)
+ throbber->frame_number = number_of_frames - 1;
+
if (throbber->frame_number == number_of_frames - 1)
should_continue = false;
+ }
frames = (ply_pixel_buffer_t *const *) ply_array_get_pointer_elements (throbber->frames);
ply_pixel_buffer_get_size (frames[throbber->frame_number], &throbber->frame_area);
--
2.16.4

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Tue Oct 23 07:15:48 UTC 2018 - msrb@suse.com
- plymouth-throbber-Don-t-skip-last-frame-when-waiting-for-end.patch
* Make sure plymouthd stops throbber animation at the first
opportunity after receiving quit command, instead of looping
multiple times. (boo#1110199)
-------------------------------------------------------------------
Thu Oct 18 11:57:15 UTC 2018 - qzhao@suse.com

View File

@ -47,6 +47,8 @@ Patch5: 0001-Add-label-ft-plugin.patch
Patch6: 0002-Install-label-ft-plugin-into-initrd-if-available.patch
# PATCH-FIX-UPSTREAM 0003-fix_null_deref.patch boo#959986 fvogt@suse.com -- add ability to output text in initrd needed for encryption.
Patch7: 0003-fix_null_deref.patch
# PATCH-FIX-UPSTREAM plymouth-throbber-Don-t-skip-last-frame-when-waiting-for-end.patch boo#1110199 msrb@suse.com -- Do not skip last frame when waiting for end of throbber animation. Prevents unvanted looping after being told to quit.
Patch8: plymouth-throbber-Don-t-skip-last-frame-when-waiting-for-end.patch
BuildRequires: automake
BuildRequires: docbook-xsl-stylesheets