[MPlayer-cvslog] CVS: main/osdep vbelib.c,1.26,1.27
Aurelien Jacobs CVS
syncmail at mplayerhq.hu
Sat Jul 16 16:49:23 CEST 2005
CVS change done by Aurelien Jacobs CVS
Update of /cvsroot/mplayer/main/osdep
In directory mail:/var2/tmp/cvs-serv22905/osdep
Modified Files:
vbelib.c
Log Message:
proper disabling/enabling of console output for vo_vesa
Index: vbelib.c
===================================================================
RCS file: /cvsroot/mplayer/main/osdep/vbelib.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- vbelib.c 6 Oct 2004 08:42:13 -0000 1.26
+++ vbelib.c 16 Jul 2005 14:49:21 -0000 1.27
@@ -24,6 +24,8 @@
#include <ctype.h>
#include <unistd.h>
#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <linux/kd.h>
static struct VesaProtModeInterface vbe_pm_info;
static struct VesaModeInfoBlock curr_mode_info;
@@ -94,25 +96,28 @@
#define VBE_LRMI_int(int_no,regs) (VBE_LRMI_int(int_no,regs))
#endif
-static FILE *my_stdin;
-static FILE *my_stdout;
-static FILE *my_stderr;
-
-static void __set_cursor_type(FILE *stdout_fd,int cursor_on)
-{
- fprintf(stdout_fd,"\033[?25%c",cursor_on?'h':'l');
-}
-
-/* TODO: do it only on LCD or DFP. We should extract such info from DDC */
-static void hide_terminal_output( void )
-{
- my_stdin = fopen(ttyname(fileno(stdin )),"r");
- my_stdout = fopen(ttyname(fileno(stdout)),"w");
- my_stderr = fopen(ttyname(fileno(stderr)),"w");
- __set_cursor_type(stdout,0);
-/*if(isatty(fileno(stdin ))) stdin =freopen("/dev/null","r",stdin );*/
- if(isatty(fileno(stdout))) freopen("/dev/null","w",stdout);
- if(isatty(fileno(stderr))) freopen("/dev/null","w",stderr);
+/**
+ * Set console to graphics or text mode.
+ * This is a clean way to enable/disable console text output
+ * and cursor blinking.
+ *
+ * @param mode The new wanted mode. Can be either KD_GRAPHICS to switch
+ * to graphics mode or anything else to switch back to the
+ * original mode.
+ */
+static void kd_set_mode(int mode)
+{
+ static int old_mode = KD_TEXT;
+ int fd;
+
+ if ((fd = open("/dev/tty0", O_RDWR)) < 0)
+ return;
+ if(mode == KD_GRAPHICS)
+ old_mode = ioctl(fd, KDGETMODE);
+ else
+ mode = old_mode;
+ ioctl(fd, KDSETMODE, mode);
+ close(fd);
}
static unsigned hh_int_10_seg;
@@ -147,13 +152,13 @@
&& vbe_pm_info.iopl_ports[i++] > 1023) ioperm(iopl_port,1,1);
iopl(3);
fd_mem = open("/dev/mem",O_RDWR);
- hide_terminal_output();
+ kd_set_mode(KD_GRAPHICS);
return VBE_OK;
}
int vbeDestroy( void )
{
- if (my_stdout) __set_cursor_type(my_stdout,1);
+ kd_set_mode(KD_TEXT);
close(fd_mem);
LRMI_free_real(controller_info);
return VBE_OK;
More information about the MPlayer-cvslog
mailing list