From a994602d839ca1efd929ace84bc2e69cd4f5b325 Mon Sep 17 00:00:00 2001 From: Mark Lee Date: Fri, 2 Feb 2024 18:16:36 +0000 Subject: [PATCH] Implement window callback methods --- .../videosurface/VideoEngineVideoSurface.java | 47 +++++++++++++++++++ .../VideoEngineWindowCallbackHandler.java | 2 + 2 files changed, 49 insertions(+) diff --git a/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/VideoEngineVideoSurface.java b/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/VideoEngineVideoSurface.java index bee76eb7b..f42639295 100644 --- a/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/VideoEngineVideoSurface.java +++ b/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/VideoEngineVideoSurface.java @@ -40,6 +40,7 @@ import uk.co.caprica.vlcj.binding.internal.libvlc_video_transfer_func_e; import uk.co.caprica.vlcj.binding.internal.libvlc_video_update_output_cb; import uk.co.caprica.vlcj.player.base.MediaPlayer; +import uk.co.caprica.vlcj.player.base.MouseButton; import uk.co.caprica.vlcj.player.embedded.videosurface.videoengine.VideoEngine; import uk.co.caprica.vlcj.player.embedded.videosurface.videoengine.VideoEngineCallback; import uk.co.caprica.vlcj.player.embedded.videosurface.videoengine.VideoEngineWindowCallbackHandler; @@ -49,6 +50,14 @@ /** * Implementation of a video surface that bridges native video engine callbacks to a rendering API (like JOGL, LWJGL and * so on). + *

+ * The window callback methods must not be invoked concurrently: + *

*/ public final class VideoEngineVideoSurface extends VideoSurface { @@ -91,6 +100,44 @@ public VideoEngineVideoSurface(VideoEngine engine, VideoEngineCallback callback, this.callback = callback; } + /** + * Report a video surface size change to the native video surface. + * + * @param width new width + * @param height new height + */ + public void resize(int width, int height) { + windowCallbackHandler.setSize(width, height); + } + + /** + * Report a mouse moved event to the native video surface + * + * @param x new mouse x position + * @param y new mouse y position + */ + public void mouseMoved(int x, int y) { + windowCallbackHandler.mouseMoved(x, y); + } + + /** + * Report a mouse pressed event to the native video surface. + * + * @param mouseButton button that was pressed + */ + public void mousePressed(MouseButton mouseButton) { + windowCallbackHandler.mousePressed(mouseButton); + } + + /** + * Report a mouse released event to the native video surface. + * + * @param mouseButton button that was pressed + */ + public void mouseReleased(MouseButton mouseButton) { + windowCallbackHandler.mouseReleased(mouseButton); + } + @Override public void attach(MediaPlayer mediaPlayer) { libvlc_video_set_output_callbacks( diff --git a/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/videoengine/VideoEngineWindowCallbackHandler.java b/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/videoengine/VideoEngineWindowCallbackHandler.java index 608f78b40..4c6fe0f4d 100644 --- a/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/videoengine/VideoEngineWindowCallbackHandler.java +++ b/src/main/java/uk/co/caprica/vlcj/player/embedded/videosurface/videoengine/VideoEngineWindowCallbackHandler.java @@ -28,6 +28,8 @@ /** * Handler component that bridges a vlcj application with the native video engine window callback. + *

+ * The various callback method invocations must not be made concurrently. */ public final class VideoEngineWindowCallbackHandler implements VideoEngineWindowCallback {