vlc | branch: master | Steve Lhomme <[email protected]> | Tue Feb 4 14:53:21 2020 +0100| [aab1165b99bb08bdd02342b39b98a734697b9466] | committer: Steve Lhomme
libvlc: let the OpenGL host app change the opaque data used for the session The host may only allocate the opaque structure and the related resources when a session happens. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=aab1165b99bb08bdd02342b39b98a734697b9466 --- doc/libvlc/QtGL/qtvlcwidget.cpp | 8 ++++---- doc/libvlc/sdl_opengl_player.cpp | 8 ++++---- include/vlc/libvlc_media_player.h | 24 ++++++++++++++---------- modules/video_output/vgl.c | 2 +- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/doc/libvlc/QtGL/qtvlcwidget.cpp b/doc/libvlc/QtGL/qtvlcwidget.cpp index 22483efc7c..3c85075f6b 100644 --- a/doc/libvlc/QtGL/qtvlcwidget.cpp +++ b/doc/libvlc/QtGL/qtvlcwidget.cpp @@ -64,14 +64,14 @@ public: } // This callback is called during initialisation. - static bool setup(void* data) + static bool setup(void** data) { if (!QOpenGLContext::supportsThreadedOpenGL()) return false; - VLCVideo* that = static_cast<VLCVideo*>(data); - that->m_width = 0; - that->m_height = 0; + VLCVideo** that = static_cast<VLCVideo**>(data); + (*that)->m_width = 0; + (*that)->m_height = 0; return true; } diff --git a/doc/libvlc/sdl_opengl_player.cpp b/doc/libvlc/sdl_opengl_player.cpp index 6e067ccba0..acf7053a50 100644 --- a/doc/libvlc/sdl_opengl_player.cpp +++ b/doc/libvlc/sdl_opengl_player.cpp @@ -160,11 +160,11 @@ public: } // This callback is called during initialisation. - static bool setup(void* data) + static bool setup(void** data) { - VLCVideo* that = static_cast<VLCVideo*>(data); - that->m_width = 0; - that->m_height = 0; + VLCVideo** that = static_cast<VLCVideo**>(data); + (*that)->m_width = 0; + (*that)->m_height = 0; return true; } diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h index 1f89340a81..10a4ed75f0 100644 --- a/include/vlc/libvlc_media_player.h +++ b/include/vlc/libvlc_media_player.h @@ -506,17 +506,19 @@ void libvlc_video_set_format_callbacks( libvlc_media_player_t *mp, /** * Callback prototype called to initialize user data. * - * \param opaque private pointer passed to the @a libvlc_video_set_output_callbacks() [IN] + * \param opaque private pointer passed to the @a libvlc_video_set_output_callbacks() + * on input. The callback can change this value on output to be + * passed to all the other callbacks set on @a libvlc_video_set_output_callbacks(). [IN/OUT] * \return true on success * \version LibVLC 4.0.0 or later */ -typedef bool (*libvlc_video_setup_cb)(void* opaque); +typedef bool (*libvlc_video_setup_cb)(void** opaque); /** * Callback prototype called to release user data * - * \param opaque private pointer passed to the @a libvlc_video_set_output_callbacks() [IN] + * \param opaque private pointer set on the opaque parameter of @a libvlc_video_setup_cb() [IN] * \version LibVLC 4.0.0 or later */ typedef void (*libvlc_video_output_cleanup_cb)(void* opaque); @@ -549,8 +551,8 @@ typedef struct * Callback prototype called on video size changes. * Update the rendering output setup. * - * \param opaque private pointer passed to the @a libvlc_video_set_output_callbacks() or - * @a libvlc_video_direct3d_device_setup_cb() [IN] + * \param opaque private pointer set on the opaque parameter of @a libvlc_video_setup_cb() + * or @a libvlc_video_direct3d_device_setup_cb() [IN] * \param cfg configuration of the video that will be rendered [IN] * \param output configuration describing with how the rendering is setup [OUT] * \version LibVLC 4.0.0 or later @@ -570,7 +572,8 @@ typedef bool (*libvlc_video_update_output_cb)(void* opaque, const libvlc_video_r /** * Callback prototype called after performing drawing calls. * - * \param opaque private pointer passed to the @a libvlc_video_set_output_callbacks() [IN] + * \param opaque private pointer set on the opaque parameter of @a libvlc_video_setup_cb() + * or @a libvlc_video_direct3d_device_setup_cb() [IN] * \version LibVLC 4.0.0 or later */ typedef void (*libvlc_video_swap_cb)(void* opaque); @@ -579,8 +582,8 @@ typedef void (*libvlc_video_swap_cb)(void* opaque); * Callback prototype to set up the OpenGL context for rendering. * Tell the host the rendering is about to start/has finished. * - * \param opaque private pointer passed to the @a libvlc_video_set_output_callbacks() or - * @a libvlc_video_direct3d_device_setup_cb() [IN] + * \param opaque private pointer set on the opaque parameter of @a libvlc_video_setup_cb() + * or @a libvlc_video_direct3d_device_setup_cb() [IN] * \param enter true to set the context as current, false to unset it [IN] * \return true on success * \version LibVLC 4.0.0 or later @@ -605,7 +608,7 @@ typedef bool (*libvlc_video_makeCurrent_cb)(void* opaque, bool enter); /** * Callback prototype to load opengl functions * - * \param opaque private pointer passed to the @a libvlc_video_set_output_callbacks() [IN] + * \param opaque private pointer set on the opaque parameter of @a libvlc_video_setup_cb() [IN] * \param fct_name name of the opengl function to load * \return a pointer to the named OpenGL function the NULL otherwise * \version LibVLC 4.0.0 or later @@ -754,7 +757,8 @@ typedef void( *libvlc_video_direct3d_set_resize_cb )( void *opaque, /** Tell the host the rendering for the given plane is about to start * - * \param opaque private pointer set on the opaque parameter of @a libvlc_video_direct3d_device_setup_cb() [IN] + * \param opaque private pointer set on the opaque parameter of @a libvlc_video_setup_cb() + * or @a libvlc_video_direct3d_device_setup_cb() [IN] * \param plane number of the rendering plane to select * \return true on success * \version LibVLC 4.0.0 or later diff --git a/modules/video_output/vgl.c b/modules/video_output/vgl.c index 2f17ac3e79..75dc75a79d 100644 --- a/modules/video_output/vgl.c +++ b/modules/video_output/vgl.c @@ -141,7 +141,7 @@ static int Open(vlc_gl_t *gl, unsigned width, unsigned height) gl->destroy = Close; if( sys->setupCb ) - if( !sys->setupCb(sys->opaque) ) + if( !sys->setupCb(&sys->opaque) ) { msg_Err( gl, "user setup failed" ); return VLC_EGENERIC; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
