* [Qemu-devel] three small patches
@ 2004-07-20 16:24 Mark Jonckheere
0 siblings, 0 replies; only message in thread
From: Mark Jonckheere @ 2004-07-20 16:24 UTC (permalink / raw)
To: qemu-devel
These patches are against current (17-7-2004) CVS.
Patch 1:
--------
This patch makes it possible to compile vmdk.c with the infamous
RedHat-only gcc-2.96. This version of gcc doesn't like data
declarations in the middle of a code block.
diff -ur qemu/vmdk2raw.c qemu-patched/vmdk2raw.c
--- qemu.old/vmdk2raw.c Wed Jun 16 22:34:33 2004
+++ qemu/vmdk2raw.c Sat Jun 26 14:33:03 2004
@@ -129,10 +129,11 @@
/* the last chunk of the file can not be sparse
* or the file will be truncated */
if (offset + length >= disk_limit) {
+ const char nil = 0;
+
if (lseek64(out_fd, length-1, SEEK_CUR) == (off_t)-1)
perror("lseek");
/* write the last NULL byte instead of seeking */
- const char nil = 0;
write(out_fd, &nil, 1);
} else {
if (lseek64(out_fd, length, SEEK_CUR) == (off_t)-1)
@@ -186,12 +187,13 @@
static int open_vmdk(const char *filename)
{
int fd = open(filename, O_RDONLY | O_LARGEFILE);
+ char magic[4];
+
if (fd == -1) {
perror(filename);
return -1;
}
- char magic[4];
if (read(fd, &magic, sizeof(magic)) != sizeof(magic)) {
perror("read from disk");
return -1;
Patch 2:
--------
This patch enables qemu to run as a background process. It
initialises the current terminal only when serial- or monitor-I/O
is redirected to stdin/stdout or when -nographic is selected.
The program stops in the term_init() function when launched
as a background process.
examples:
qemu -hda disk.img &
xinit /usr/local/bin/qemu -hda disk.img -- :1 &
The second example launches qemu with a second X server and permits
to switch between host and guest operating systems using ctrl-alt-F7
and ctrl-alt-F8.
diff -ur qemu/vl.c qemu-patched/vl.c
--- qemu/vl.c Wed Jul 14 19:27:31 2004
+++ qemu-patched/vl.c Tue Jul 20 12:55:46 2004
@@ -3112,7 +3112,9 @@
{
vm_start();
}
- term_init();
+ /* Change terminal settings only if stdin/out is used */
+ if (client_index > 0)
+ term_init();
main_loop();
quit_timers();
return 0;
Patch 3:
--------
This patch is an extention to the previous one. Next to enable
running in background mode It adds the command line option
-full-screen which permits to start qemu immediatly in full
screen mode. Note: the trick to make sure grab is on at
startup is non-optimal.
examples:
qemu -hda disk.img -full-screen &
xinit /usr/local/bin/qemu -hda disk.img -full-screen -- :1 &
The second example launches qemu with a second X server using
the screen resolution as requested by the guest operating system
It permits to switch between host and guest operating systems
using ctrl-alt-F7 and ctrl-alt-F8.
diff -ur qemu/sdl.c qemu-patched/sdl.c
--- qemu/sdl.c Wed Jul 14 19:22:33 2004
+++ qemu-patched/sdl.c Tue Jul 20 17:09:21 2004
@@ -45,6 +45,10 @@
{
// printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
SDL_UpdateRect(screen, x, y, w, h);
+ /* FIXME: next two lines are a quick fix, to make
+ * sure grab is always on in fullscreen mode */
+ if (gui_fullscreen)
+ sdl_grab_start();
}
static void sdl_resize(DisplayState *ds, int w, int h)
@@ -540,7 +544,7 @@
SDL_Quit();
}
-void sdl_display_init(DisplayState *ds)
+void sdl_display_init(DisplayState *ds, int full)
{
int flags;
@@ -566,4 +570,8 @@
gui_grab = 0;
atexit(sdl_cleanup);
+
+ if (full) {
+ gui_fullscreen = 1;
+ }
}
diff -ur qemu/vl.c qemu-patched/vl.c
--- qemu/vl.c Wed Jul 14 19:27:31 2004
+++ qemu-patched/vl.c Tue Jul 20 14:00:22 2004
@@ -138,6 +138,7 @@
int graphic_width = 800;
int graphic_height = 600;
int graphic_depth = 15;
+int full_screen = 0;
TextConsole *vga_console;
/***********************************************************/
@@ -2440,6 +2441,7 @@
@@ -2440,6 +2441,7 @@
QEMU_OPTION_std_vga,
QEMU_OPTION_monitor,
QEMU_OPTION_serial,
+ QEMU_OPTION_full_screen,
};
typedef struct QEMUOption {
@@ -2493,6 +2495,7 @@
{ "std-vga", 0, QEMU_OPTION_std_vga },
{ "monitor", 1, QEMU_OPTION_monitor },
{ "serial", 1, QEMU_OPTION_serial },
+ { "full-screen", 0, QEMU_OPTION_full_screen },
/* temporary options */
{ "pci", 0, QEMU_OPTION_pci },
@@ -2832,6 +2835,9 @@
case QEMU_OPTION_serial:
pstrcpy(serial_device, sizeof(serial_device), optarg);
break;
+ case QEMU_OPTION_full_screen:
+ full_screen = 1;
+ break;
}
}
}
@@ -3015,7 +3021,7 @@
dumb_display_init(ds);
} else {
#ifdef CONFIG_SDL
- sdl_display_init(ds);
+ sdl_display_init(ds, full_screen);
#else
dumb_display_init(ds);
#endif
@@ -3112,7 +3118,9 @@
{
vm_start();
}
- term_init();
+ /* Change terminal settings only if stdin/out is used */
+ if (client_index > 0)
+ term_init();
main_loop();
quit_timers();
return 0;
diff -ur qemu/vl.h qemu-patched/vl.h
--- qemu/vl.h Wed Jul 14 19:27:33 2004
+++ qemu-patched/vl.h Tue Jul 20 14:04:09 2004
@@ -629,7 +629,7 @@
unsigned long vga_ram_offset, int vga_ram_size);
/* sdl.c */
-void sdl_display_init(DisplayState *ds);
+void sdl_display_init(DisplayState *ds, int full);
/* ide.c */
#define MAX_DISKS 4
vriendelijke groeten,
Mark.
--
:wq
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-07-21 0:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-20 16:24 [Qemu-devel] three small patches Mark Jonckheere
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.