aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Göthel <[email protected]>2024-02-07 02:25:58 +0100
committerSven Göthel <[email protected]>2024-02-07 02:25:58 +0100
commit2c84a3f7bf97ecfe445cd33a14ac7f968deb3e5e (patch)
tree3c2f6f80adfbdaadb98c52723b41057a2c0d646f
parent1d54666a16863d69a03345ab7ef4aaa3332a79ac (diff)
GLMediaPlayerImpl: Fix playing one frame after seek() @ getNextTexture(), requires pause state (normal at play-state)
-rw-r--r--src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java b/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java
index 776a54406..ff683281c 100644
--- a/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java
+++ b/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java
@@ -108,7 +108,7 @@ public abstract class GLMediaPlayerImpl implements GLMediaPlayer {
private volatile State state;
private final Object stateLock = new Object();
- private final AtomicBoolean oneVideoFrameOnce = new AtomicBoolean(false);
+ private final AtomicBoolean oneVideoFrameAtPause = new AtomicBoolean(false);
private int textureCount;
private int textureTarget;
@@ -587,7 +587,7 @@ public abstract class GLMediaPlayerImpl implements GLMediaPlayer {
pts1 = 0;
}
}
- oneVideoFrameOnce.set(true);
+ oneVideoFrameAtPause.set(true);
if(DEBUG) { logout.println("Seek("+msec+"): "+preState+" -> "+state+", "+toString()); }
return pts1;
}
@@ -1189,7 +1189,7 @@ public abstract class GLMediaPlayerImpl implements GLMediaPlayer {
@Override
public final TextureFrame getNextTexture(final GL gl) throws IllegalStateException {
synchronized( stateLock ) {
- final boolean oneVideoFrame = oneVideoFrameOnce.compareAndSet(true, false);
+ final boolean oneVideoFrame = State.Paused == state && oneVideoFrameAtPause.compareAndSet(true, false);
if( oneVideoFrame || State.Playing == state ) {
boolean dropFrame = false;
try {
@@ -1283,7 +1283,7 @@ public abstract class GLMediaPlayerImpl implements GLMediaPlayer {
}
}
if( !hasVideoFrame && oneVideoFrame ) {
- oneVideoFrameOnce.set(true);
+ oneVideoFrameAtPause.set(true);
}
if( hasVideoFrame && video_pts.isValid() ) {