[vlc-devel] commit: dialog: support modal fatal errors ( Rémi Denis-Courmont )

git version control git at videolan.org
Sat Mar 7 17:29:42 CET 2009


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Mar  7 18:09:23 2009 +0200| [cde300c7797d6e849c08fe01a6a0998794d98244] | committer: Rémi Denis-Courmont 

dialog: support modal fatal errors

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cde300c7797d6e849c08fe01a6a0998794d98244
---

 include/vlc_dialog.h   |   26 +++++++++++++++++++++++++-
 src/interface/dialog.c |   21 +++------------------
 src/libvlccore.sym     |    2 +-
 3 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/include/vlc_dialog.h b/include/vlc_dialog.h
index 01c164a..9758243 100644
--- a/include/vlc_dialog.h
+++ b/include/vlc_dialog.h
@@ -20,6 +20,7 @@
 
 #ifndef VLC_DIALOG_H_
 #define VLC_DIALOG_H_
+# include <stdarg.h>
 
 /**
  * \file vlc_dialog.h
@@ -34,12 +35,35 @@ typedef struct dialog_fatal_t
 {
     const char *title;
     const char *message;
+    bool modal;
 } dialog_fatal_t;
 
-VLC_EXPORT( void, dialog_Fatal, (vlc_object_t *, const char *, const char *, ...) ) LIBVLC_FORMAT(3, 4);
+VLC_EXPORT( void, dialog_VFatal, (vlc_object_t *, bool, const char *, const char *, va_list) );
+
+static inline LIBVLC_FORMAT(3, 4)
+void dialog_Fatal (vlc_object_t *obj, const char *title, const char *fmt, ...)
+{
+     va_list ap;
+
+     va_start (ap, fmt);
+     dialog_VFatal(obj, false, title, fmt, ap);
+     va_end (ap);
+}
 #define dialog_Fatal(o, t, ...) \
         dialog_Fatal(VLC_OBJECT(o), t, __VA_ARGS__)
 
+static inline LIBVLC_FORMAT(3, 4)
+void dialog_FatalWait (vlc_object_t *obj, const char *title,
+                       const char *fmt, ...){
+     va_list ap;
+
+     va_start (ap, fmt);
+     dialog_VFatal(obj, true, title, fmt, ap);
+     va_end (ap);
+}
+#define dialog_FatalWait(o, t, ...) \
+        dialog_FatalWait(VLC_OBJECT(o), t, __VA_ARGS__)
+
 VLC_EXPORT( int, dialog_Register, (vlc_object_t *) );
 VLC_EXPORT( int, dialog_Unregister, (vlc_object_t *) );
 #define dialog_Register(o) dialog_Register(VLC_OBJECT(o))
diff --git a/src/interface/dialog.c b/src/interface/dialog.c
index 424f188..29a0466 100644
--- a/src/interface/dialog.c
+++ b/src/interface/dialog.c
@@ -92,9 +92,8 @@ static vlc_object_t *dialog_GetProvider (vlc_object_t *obj)
     return provider;
 }
 
-static
-void dialog_FatalVa (vlc_object_t *obj, const char *title,
-                     const char *fmt, va_list ap)
+void dialog_VFatal (vlc_object_t *obj, bool modal, const char *title,
+                    const char *fmt, va_list ap)
 {
     char *text;
 
@@ -112,22 +111,8 @@ void dialog_FatalVa (vlc_object_t *obj, const char *title,
     if (vasprintf (&text, fmt, ap) == -1)
         return;
 
-    dialog_fatal_t dialog = { title, text, };
+    dialog_fatal_t dialog = { title, text, modal, };
     var_SetAddress (provider, "dialog-fatal", &dialog);
     free (text);
     vlc_object_release (provider);
 }
-
-#undef dialog_Fatal
-/**
- * Notify the user of some fatal error.
- * This is a fire and forget function.
- */
-void dialog_Fatal (vlc_object_t *obj, const char *title, const char *fmt, ...)
-{
-    va_list ap;
-
-    va_start (ap, fmt);
-    dialog_FatalVa (obj, title, fmt, ap);
-    va_end (ap);
-}
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index d46ecb0..3e0edc2 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -102,9 +102,9 @@ decode_URI_duplicate
 demux_PacketizerDestroy
 demux_PacketizerNew
 demux_vaControlHelper
-dialog_Fatal
 dialog_Register
 dialog_Unregister
+dialog_VFatal
 encode_URI_component
 EndMD5
 EnsureUTF8




More information about the vlc-devel mailing list