From bf90b313dc9b7c0f21d547deb771966ab7cc80a3 Mon Sep 17 00:00:00 2001
From: Felix Abecassis <felix.abecassis@gmail.com>
Date: Wed, 27 Nov 2013 10:17:13 +0100
Subject: [PATCH] thumbnailer: do not wait until video position becomes
 *strictly* superior to THUMBNAIL_POSITION.

Avoid waiting unnecessarily when the media player reaches exactly THUMBNAIL_POSITION. However we must now wait until libvlc updates the position before polling with libvlc_media_player_get_position().

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
(cherry picked from commit 0c2844f9a396953164890ea4d5b3a8723cb8a722)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
---
 vlc-android/jni/thumbnailer.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/vlc-android/jni/thumbnailer.c b/vlc-android/jni/thumbnailer.c
index 2d41a598b1..1f65ed77de 100644
--- a/vlc-android/jni/thumbnailer.c
+++ b/vlc-android/jni/thumbnailer.c
@@ -263,12 +263,12 @@ jbyteArray Java_org_videolan_libvlc_LibVLC_getThumbnail(JNIEnv *env, jobject thi
     libvlc_media_player_play(mp);
     libvlc_media_player_set_position(mp, THUMBNAIL_POSITION);
 
-    int loops = 100;
-    for (;;) {
-        float pos = libvlc_media_player_get_position(mp);
-        if (pos > THUMBNAIL_POSITION || !loops--)
+    const int wait_time = 50000;
+    const int max_attempts = 100;
+    for (int i = 0; i < max_attempts; ++i) {
+        if (libvlc_media_player_is_playing(mp) && libvlc_media_player_get_position(mp) >= THUMBNAIL_POSITION)
             break;
-        usleep(50000);
+        usleep(wait_time);
     }
 
     /* Wait for the thumbnail to be generated. */
-- 
GitLab