diff --git a/modules/globebrowsing/src/tileprovider/videotileprovider.cpp b/modules/globebrowsing/src/tileprovider/videotileprovider.cpp index b831c20356..0eb405eba5 100644 --- a/modules/globebrowsing/src/tileprovider/videotileprovider.cpp +++ b/modules/globebrowsing/src/tileprovider/videotileprovider.cpp @@ -127,8 +127,6 @@ namespace { namespace openspace::globebrowsing { -int VideoTileProvider::_wakeup = 0; - bool checkMpvError(int status) { if (status < 0) { LERROR(fmt::format("Libmpv API error: {}", mpv_error_string(status))); @@ -143,10 +141,10 @@ void* getOpenGLProcAddress(void*, const char* name) { ); } -void VideoTileProvider::on_mpv_render_update(void*) { +void VideoTileProvider::on_mpv_render_update(void* ctx) { // The wakeup flag is set here to enable the mpv_render_context_render // path in the main loop. - _wakeup = 1; + static_cast(ctx)->_wakeup = 1; } void VideoTileProvider::observePropertyMpv(std::string name, mpv_format format, @@ -407,7 +405,7 @@ void VideoTileProvider::initializeMpv() { mpv_render_context_set_update_callback( _mpvRenderContext, on_mpv_render_update, - nullptr + this ); // Load file diff --git a/modules/globebrowsing/src/tileprovider/videotileprovider.h b/modules/globebrowsing/src/tileprovider/videotileprovider.h index 7725651598..ba6f30c041 100644 --- a/modules/globebrowsing/src/tileprovider/videotileprovider.h +++ b/modules/globebrowsing/src/tileprovider/videotileprovider.h @@ -106,7 +106,7 @@ private: void handleMpvProperties(mpv_event* event); void swapBuffersMpv(); // Called in postDraw void cleanUpMpv(); // Called in internalDeinitialze - static void on_mpv_render_update(void*); + static void on_mpv_render_update(void*); // Has to be static because of C api void observePropertyMpv(std::string name, mpv_format format, LibmpvPropertyKey key); void setPropertyStringMpv(std::string name, std::string value); void seekToTime(double time); @@ -129,7 +129,7 @@ private: std::unique_ptr_frameTexture = nullptr; mpv_opengl_fbo _mpvFbo; GLuint _fbo = 0; - static int _wakeup; + int _wakeup = 0; bool _didRender = false; bool _isPaused = false;