]> git.sesse.net Git - vlc/blobdiff - src/interface/dialog.c
Extensions: core function dialog_ExtensionUpdate
[vlc] / src / interface / dialog.c
index 6aa87c7f901c1ec8f67642f2d569c80f3c9736e2..c1f21e2c995a16738415aed5c1d8c5e13eab7f4e 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <vlc_common.h>
 #include <vlc_dialog.h>
+#include <vlc_extensions.h>
 #include <assert.h>
 #include "libvlc.h"
 
@@ -119,8 +120,9 @@ void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title,
 
     if (vasprintf (&text, fmt, ap) != -1)
     {
-        dialog_fatal_t dialog = { title, text, modal, };
-        var_SetAddress (provider, "dialog-fatal", &dialog);
+        dialog_fatal_t dialog = { title, text, };
+        var_SetAddress (provider,
+                        modal ? "dialog-critical" : "dialog-error", &dialog);
         free (text);
     }
     vlc_object_release (provider);
@@ -243,11 +245,12 @@ void dialog_ProgressDestroy (dialog_progress_bar_t *dialog)
     free (dialog);
 }
 
-void dialog_ProgressSet (dialog_progress_bar_t *dialog, float value)
+void dialog_ProgressSet (dialog_progress_bar_t *dialog, const char *text,
+                         float value)
 {
     assert (dialog);
 
-    dialog->pf_update (dialog->p_sys, value);
+    dialog->pf_update (dialog->p_sys, text, value);
 }
 
 bool dialog_ProgressCancelled (dialog_progress_bar_t *dialog)
@@ -257,3 +260,23 @@ bool dialog_ProgressCancelled (dialog_progress_bar_t *dialog)
     return dialog->pf_check (dialog->p_sys);
 }
 
+#undef dialog_ExtensionUpdate
+int dialog_ExtensionUpdate (vlc_object_t *obj, extension_dialog_t *dialog)
+{
+    assert (obj);
+    assert (dialog);
+
+    vlc_object_t *dp = dialog_GetProvider(obj);
+    if (!dp)
+    {
+        msg_Warn (obj, "Dialog provider is not set, can't update dialog '%s'",
+                  dialog->psz_title);
+        return VLC_EGENERIC;
+    }
+
+    // Signaling the dialog provider
+    int ret = var_SetAddress (dp, "dialog-extension", dialog);
+
+    vlc_object_release (dp);
+    return ret;
+}