]> git.sesse.net Git - vlc/blobdiff - modules/video_output/fb.c
Qt: use %tmp%/$TMP folder for updates
[vlc] / modules / video_output / fb.c
index e55e6168c7b5bb723ca1b02e2547aa8c0ed13361..4c4cef1f0140771cb10862e1a1b904a8e066f55b 100644 (file)
@@ -46,7 +46,7 @@
 #include <vlc_plugin.h>
 #include <vlc_vout_display.h>
 #include <vlc_picture_pool.h>
-#include <vlc_charset.h>
+#include <vlc_fs.h>
 
 /*****************************************************************************
  * Module descriptor
 #define DEVICE_LONGTEXT N_(\
     "Framebuffer device to use for rendering (usually /dev/fb0).")
 
-#define TTY_TEXT N_("Run fb on current tty.")
+#define TTY_TEXT N_("Run fb on current tty")
 #define TTY_LONGTEXT N_(\
     "Run framebuffer on current TTY device (default enabled). " \
     "(disable tty handling with caution)")
 
-#define FB_MODE_TEXT N_("Framebuffer resolution to use.")
+#define FB_MODE_TEXT N_("Framebuffer resolution to use")
 #define FB_MODE_LONGTEXT N_(\
     "Select the resolution for the framebuffer. Currently it supports " \
     "the values 0=QCIF 1=CIF 2=NTSC 3=PAL, 4=auto (default 4=auto)")
 
-#define HW_ACCEL_TEXT N_("Framebuffer uses hw acceleration.")
+#define HW_ACCEL_TEXT N_("Framebuffer uses hw acceleration")
 #define HW_ACCEL_LONGTEXT N_(\
     "If your framebuffer supports hardware acceleration or does double buffering " \
     "in hardware then you must disable this option. It then does double buffering " \
     "in software.")
 
-#define CHROMA_TEXT N_("Image format (default RGB).")
+#define CHROMA_TEXT N_("Image format (default RGB)")
 #define CHROMA_LONGTEXT N_("Chroma fourcc used by the framebuffer. Default is RGB since the fb device has no way to report its chroma.")
 
 static int  Open (vlc_object_t *);
@@ -83,14 +83,14 @@ vlc_module_begin ()
     set_shortname("Framebuffer")
     set_category(CAT_VIDEO)
     set_subcategory(SUBCAT_VIDEO_VOUT)
-    add_file(FB_DEV_VAR, "/dev/fb0", NULL, DEVICE_TEXT, DEVICE_LONGTEXT,
-              false)
-    add_bool("fb-tty", true, NULL, TTY_TEXT, TTY_LONGTEXT, true)
-    add_string( "fb-chroma", NULL, NULL, CHROMA_TEXT, CHROMA_LONGTEXT, true )
+    add_loadfile(FB_DEV_VAR, "/dev/fb0", DEVICE_TEXT, DEVICE_LONGTEXT,
+                 false)
+    add_bool("fb-tty", true, TTY_TEXT, TTY_LONGTEXT, true)
+    add_string( "fb-chroma", NULL, CHROMA_TEXT, CHROMA_LONGTEXT, true )
     add_obsolete_string("fb-aspect-ratio")
-    add_integer("fb-mode", 4, NULL, FB_MODE_TEXT, FB_MODE_LONGTEXT,
+    add_integer("fb-mode", 4, FB_MODE_TEXT, FB_MODE_LONGTEXT,
                  true)
-    add_bool("fb-hw-accel", true, NULL, HW_ACCEL_TEXT, HW_ACCEL_LONGTEXT,
+    add_bool("fb-hw-accel", true, HW_ACCEL_TEXT, HW_ACCEL_LONGTEXT,
               true)
     set_description(N_("GNU/Linux framebuffer video output"))
     set_capability("vout display", 30)
@@ -101,14 +101,15 @@ vlc_module_end ()
  * Local prototypes
  *****************************************************************************/
 static picture_pool_t *Pool  (vout_display_t *, unsigned);
-static void           Display(vout_display_t *, picture_t *);
+static void           Display(vout_display_t *, picture_t *, subpicture_t *);
 static int            Control(vout_display_t *, int, va_list);
-static void           Manage (vout_display_t *);
 
 /* */
 static int  OpenDisplay  (vout_display_t *, bool force_resolution);
 static void CloseDisplay (vout_display_t *);
+#if 0
 static void SwitchDisplay(int i_signal);
+#endif
 static void TextMode     (int tty);
 static void GfxMode      (int tty);
 
@@ -123,8 +124,10 @@ struct vout_display_sys_t {
     struct termios      old_termios;
 
     /* Original configuration information */
+#if 0
     struct sigaction            sig_usr1;           /* USR1 previous handler */
     struct sigaction            sig_usr2;           /* USR2 previous handler */
+#endif
     struct vt_mode              vt_mode;                 /* previous VT mode */
 
     /* Framebuffer information */
@@ -144,7 +147,7 @@ struct vout_display_sys_t {
     int      bytes_per_pixel;
 
     /* Video memory */
-    uint8_t     *video_ptr;                                  /* base adress */
+    uint8_t     *video_ptr;                                 /* base address */
     size_t      video_size;                                    /* page size */
 
     picture_t       *picture;
@@ -182,23 +185,23 @@ static int Open(vlc_object_t *object)
         return VLC_ENOMEM;
 
     /* Does the framebuffer uses hw acceleration? */
-    sys->is_hw_accel = var_CreateGetBool(vd, "fb-hw-accel");
+    sys->is_hw_accel = var_InheritBool(vd, "fb-hw-accel");
 
     /* Set tty and fb devices */
     sys->tty = 0; /* 0 == /dev/tty0 == current console */
-    sys->is_tty = var_CreateGetBool(vd, "fb-tty");
+    sys->is_tty = var_InheritBool(vd, "fb-tty");
 #if !defined(WIN32) &&  defined(HAVE_ISATTY)
     /* Check that stdin is a TTY */
     if (sys->is_tty && !isatty(0)) {
-        msg_Warn(vd, "fd 0 is not a TTY");
+        msg_Warn(vd, "standard input is not a TTY");
         free(sys);
         return VLC_EGENERIC;
     }
-    msg_Warn(vd, "disabling tty handling, use with caution because "
-                 "there is no way to return to the tty.");
+    msg_Warn(vd, "disabling TTY handling, use with caution because "
+                 "there is no way to return to the TTY");
 #endif
 
-    const int mode = var_CreateGetInteger(vd, "fb-mode");
+    const int mode = var_InheritInteger(vd, "fb-mode");
     bool force_resolution = true;
     switch (mode) {
     case 0: /* QCIF */
@@ -223,7 +226,7 @@ static int Open(vlc_object_t *object)
         break;
     }
 
-    char *chroma = var_CreateGetNonEmptyString(vd, "fb-chroma");
+    char *chroma = var_InheritString(vd, "fb-chroma");
     if (chroma) {
         sys->chroma = vlc_fourcc_GetCodecFromString(VIDEO_ES, chroma);
 
@@ -251,6 +254,7 @@ static int Open(vlc_object_t *object)
         Close(VLC_OBJECT(vd));
         return VLC_EGENERIC;
     }
+    vout_display_DeleteWindow(vd, NULL);
 
     /* */
     video_format_t fmt = vd->fmt;
@@ -306,7 +310,7 @@ static int Open(vlc_object_t *object)
     vd->prepare = NULL;
     vd->display = Display;
     vd->control = Control;
-    vd->manage  = Manage;
+    vd->manage  = NULL;
 
     /* */
     vout_display_SendEventFullscreen(vd, true);
@@ -361,7 +365,7 @@ static picture_pool_t *Pool(vout_display_t *vd, unsigned count)
     }
     return sys->pool;
 }
-static void Display(vout_display_t *vd, picture_t *picture)
+static void Display(vout_display_t *vd, picture_t *picture, subpicture_t *subpicture)
 {
     vout_display_sys_t *sys = vd->sys;
 
@@ -386,6 +390,7 @@ static void Display(vout_display_t *vd, picture_t *picture)
         picture_Copy(sys->picture, picture);
 
     picture_Release(picture);
+    VLC_UNUSED(subpicture);
 }
 static int Control(vout_display_t *vd, int query, va_list args)
 {
@@ -404,24 +409,6 @@ static int Control(vout_display_t *vd, int query, va_list args)
         return VLC_EGENERIC;
     }
 }
-static void Manage (vout_display_t *vd)
-{
-    VLC_UNUSED(vd);
-#if 0
-    /*
-     * Size change
-     */
-    if (vd->i_changes & VOUT_SIZE_CHANGE)
-    {
-        msg_Dbg(vd, "reinitializing framebuffer screen");
-        vd->i_changes &= ~VOUT_SIZE_CHANGE;
-
-        vout_display_SendEventDisplaySize();
-
-        ClearScreen(vd->sys);
-    }
-#endif
-}
 
 /* following functions are local */
 static int TtyInit(vout_display_t *vd)
@@ -455,6 +442,7 @@ static int TtyInit(vout_display_t *vd)
 
     ioctl(sys->tty, VT_RELDISP, VT_ACKACQ);
 
+#if 0
     /* Set-up tty signal handler to be aware of tty changes */
     struct sigaction sig_tty;
     memset(&sig_tty, 0, sizeof(sig_tty));
@@ -466,6 +454,7 @@ static int TtyInit(vout_display_t *vd)
         /* FIXME SIGUSR1 could have succeed */
         goto error_signal;
     }
+#endif
 
     /* Set-up tty according to new signal handler */
     if (-1 == ioctl(sys->tty, VT_GETMODE, &sys->vt_mode)) {
@@ -485,9 +474,11 @@ static int TtyInit(vout_display_t *vd)
     return VLC_SUCCESS;
 
 error:
+#if 0
     sigaction(SIGUSR1, &sys->sig_usr1, NULL);
     sigaction(SIGUSR2, &sys->sig_usr2, NULL);
 error_signal:
+#endif
     tcsetattr(0, 0, &sys->old_termios);
     TextMode(sys->tty);
     return VLC_EGENERIC;
@@ -499,9 +490,11 @@ static void TtyExit(vout_display_t *vd)
     /* Reset the terminal */
     ioctl(sys->tty, VT_SETMODE, &sys->vt_mode);
 
+#if 0
     /* Remove signal handlers */
     sigaction(SIGUSR1, &sys->sig_usr1, NULL);
     sigaction(SIGUSR2, &sys->sig_usr2, NULL);
+#endif
 
     /* Reset the keyboard state */
     tcsetattr(0, 0, &sys->old_termios);
@@ -524,7 +517,7 @@ static int OpenDisplay(vout_display_t *vd, bool force_resolution)
         return VLC_EGENERIC;
     }
 
-    sys->fd = utf8_open(psz_device, O_RDWR);
+    sys->fd = vlc_open(psz_device, O_RDWR);
     if (sys->fd == -1) {
         msg_Err(vd, "cannot open %s (%m)", psz_device);
         free(psz_device);
@@ -700,6 +693,7 @@ static void CloseDisplay(vout_display_t *vd)
     }
 }
 
+#if 0
 /*****************************************************************************
  * SwitchDisplay: VT change signal handler
  *****************************************************************************
@@ -708,8 +702,6 @@ static void CloseDisplay(vout_display_t *vd)
  *****************************************************************************/
 static void SwitchDisplay(int i_signal)
 {
-    VLC_UNUSED(i_signal);
-#if 0
     vout_display_t *vd;
 
     vlc_mutex_lock(&p_vout_bank->lock);
@@ -737,8 +729,8 @@ static void SwitchDisplay(int i_signal)
     }
 
     vlc_mutex_unlock(&p_vout_bank->lock);
-#endif
 }
+#endif
 
 /*****************************************************************************
  * TextMode and GfxMode : switch tty to text/graphic mode