Hugo Beauzée-Luyssen pushed to branch master at VideoLAN / libvlcpp
Commits:
912952c3 by Hugo Beauzée-Luyssen at 2022-05-02T08:40:59+02:00
Instance: ErrorDisplay was also introduced in VLC 3
It's part of the dialog API
- - - - -
92d8d10a by Hugo Beauzée-Luyssen at 2022-05-02T09:09:12+02:00
CI: Bump 4.0 image
- - - - -
42b58a17 by Hugo Beauzée-Luyssen at 2022-05-02T09:09:12+02:00
Instance: Update dialog API to match libvlc changes
The error dialog callback is now a separated callback
- - - - -
2 changed files:
- .gitlab-ci.yml
- vlcpp/Instance.hpp
Changes:
=
.gitlab-ci.yml
=
@@ -1,6 +1,6 @@
variables:
VLC30_IMAGE: registry.videolan.org/medialibrary:20201009131431
- VLC40_IMAGE: registry.videolan.org/libvlcpp-unstable:20220316125112
+ VLC40_IMAGE: registry.videolan.org/libvlcpp-unstable:20220502070249
.common_build:
rules:
=
vlcpp/Instance.hpp
=
@@ -68,8 +68,8 @@ private:
{
Exit = 0,
Log,
-ErrorDisplay,
#if LIBVLC_VERSION_INT >= LIBVLC_VERSION(3, 0, 0, 0)
+ErrorDisplay,
LoginDisplay,
QuestionDisplay,
ProgressDisplay,
@@ -491,6 +491,39 @@ public:
* \param cancel lambda callback that will get called when a displayed
dialog needs to be cancelled. \see CancelCb
* \param updtProgress lambda callback that will get called when a
progress dialog needs to be updated. \see UpdtProgressCb
*/
+#if LIBVLC_VERSION_INT >= LIBVLC_VERSION(4, 0, 0, 0)
+template
+void setDialogHandlers(Login&& login, Question&& question, DspProgress&&
dspProgress, Cancel &&cancel, UpdtProgress &&updtProgress)
+{
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+static_assert(signature_match_or_nullptr::value,
"Mismatched login display callback prototype");
+static_assert(signature_match_or_nullptr::value,
"Mismatched question display callback prototype");
+static_assert(signature_match_or_nullptr::value, "Mismatched progress display callback prototype");
+static_assert(signature_match_or_nullptr::value,
"Mismatched cancel callback prototype");
+static_assert(signature_match_or_nullptr::value, "Mismatched update progress callback prototype");
+#endif
+libvlc_dialog_cbs tmp = {
+CallbackWrapper<(unsigned)CallbackIdx::LoginDisplay,
decltype(libvlc_dialog_cbs::pf_display_login)>::wrap(*m_callbacks,
std::forward(login)),
+CallbackWrapper<(unsigned)CallbackIdx::QuestionDisplay,
decltype(libvlc_dialog_cbs::pf_display_question)>::wrap(*m_callbacks,
std::forward(question)),
+CallbackWrapper<(unsigned)CallbackIdx::ProgressDisplay,
decltype(libvlc_dialog_cbs::pf_display_progress)>::wrap(*m_callbacks,
std::forward(dspProgress)),
+CallbackWrapper<(unsigned)CallbackIdx::CancelDialog,
decltype(libvlc_dialog_cbs::pf_cancel)>::wrap(*m_callbacks,
std::forward(cancel)),
+CallbackWrapper<(unsigned)CallbackIdx::ProgressUpdate,
decltype(libvlc_dialog_cbs::pf_update_progress)>::wrap(*m_callbacks,
std::forward(updtProgress))
+};
+m_callbacks_pointers = std::make_shared(tmp);
+libvlc_dialog_set_callbacks(*this, m_callbacks_pointers.get(),
m_callbacks.get());
+}
+
+template
+void setErrorCallback(Error&& error)
+{
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+static_assert(signature_match_or_nullptr::value,
"Mismatched error callback prototype");
+#endif
+libvlc_dialog_set_error_callback(*this,
+CallbackWrapper<(unsigned int)CallbackIdx::ErrorDisplay,
libvlc_dialog_error_cbs>::wrap(
+*m_callbacks, std::forward(error)));
+}
+#else
template
void setDialogHandlers(Error&& error, Login&& login, Question&& question,
DspProgress&& dspProgress, Cancel &&cancel, UpdtProgress &&updtProgress)
{
@@ -513,7 +546,7 @@ public:
m_callbacks_pointers = std::make_shared(tmp);
libvlc_dialog_set_callbacks(*this, m_callbacks_pointers.get(),
m_callbacks.get());
}
-
+#endif
/**
* Unset all callbacks
*/
View it on GitLab:
https://code.videolan.org/videolan/libvlcpp/-/compare/acb78a24d95029f7b4a5e5e68cbf464bbc76c63d...42b58a17ab8aa0e1d30ec358d03d5ba6ca32efb7
--
View it on GitLab:
https://code.videolan.org/videolan/libvlcpp/-/compare/acb78a24d95029f7b4a5e5e68cbf464bbc76c63d...42b58a17ab8aa0e1d30ec358d03d5ba6ca32efb7
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance___
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits