From: Miguel Angel Fraile <mianfrar@gmail.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] Embed QEmu screen on a custom window
Date: Thu, 26 May 2005 13:42:57 +0200 [thread overview]
Message-ID: <26b3ab7050526044214f0ff81@mail.gmail.com> (raw)
Hi,
I'm the author of QGui, a windows frontend for QEmu available at
http://perso.wanadoo.es/comike.
I've been trying to attach the QEmu screen to my frontend, but I
finally realized I needed to modify QEmu source to get it.
So I've attached a patch that adds a "-hwnd <handle>" argument to QEmu.
<handle> refers to the window handle where QEmu should be embedded (it
can be any control like a groupbox, form, etc).
Then, QEmu creates a new window that has the window specified at
command-line as parent. If QEmu screen size changes, parent and child
windows are resized automatically.
I hope the patch can be applied to CVS, as it would be very useful for
frontend authors.
PS: Please, add my mail address on CC, as I'm not subscribed to this list.
------------------------------------
--- vl.c Thu May 26 11:04:04 2005
+++ vl.c.new Thu May 26 11:03:34 2005
@@ -150,6 +150,9 @@
#ifdef TARGET_I386
int win2k_install_hack = 0;
#endif
+#ifdef _WIN32
+HWND fend_hwnd, qemu_hwnd;
+#endif
/***********************************************************/
/* x86 ISA bus support */
@@ -2785,6 +2788,9 @@
"-serial dev redirect the serial port to char device 'dev'\n"
"-parallel dev redirect the parallel port to char device 'dev'\n"
"-pidfile file Write PID to 'file'\n"
+#ifdef _WIN32
+ "-hwnd handle embed QEmu inside a custom window"
+#endif
"-S freeze CPU at startup (use 'c' to start
execution)\n"
"-s wait gdb connection to port %d\n"
"-p port change gdb connection port\n"
@@ -2883,6 +2889,7 @@
QEMU_OPTION_loadvm,
QEMU_OPTION_full_screen,
QEMU_OPTION_pidfile,
+ QEMU_OPTION_hwnd,
QEMU_OPTION_no_kqemu,
QEMU_OPTION_win2k_hack,
};
@@ -2953,6 +2960,9 @@
{ "loadvm", HAS_ARG, QEMU_OPTION_loadvm },
{ "full-screen", 0, QEMU_OPTION_full_screen },
{ "pidfile", HAS_ARG, QEMU_OPTION_pidfile },
+#ifdef _WIN32
+ { "hwnd", HAS_ARG, QEMU_OPTION_hwnd },
+#endif
{ "win2k-hack", 0, QEMU_OPTION_win2k_hack },
/* temporary options */
@@ -3036,7 +3046,13 @@
char parallel_devices[MAX_PARALLEL_PORTS][128];
int parallel_device_index;
const char *loadvm = NULL;
-
+
+#ifdef _WIN32
+ char widbuf[24];
+ fend_hwnd=NULL;
+ qemu_hwnd=NULL;
+#endif
+
#if !defined(CONFIG_SOFTMMU)
/* we never want that malloc() uses mmap() */
mallopt(M_MMAP_THRESHOLD, 4096 * 1024);
@@ -3405,6 +3421,16 @@
case QEMU_OPTION_pidfile:
create_pidfile(optarg);
break;
+#ifdef _WIN32
+ case QEMU_OPTION_hwnd:
+ fend_hwnd=(HWND)atoi(optarg);
+ qemu_hwnd=CreateWindow("BUTTON",NULL,BS_OWNERDRAW | WS_CHILD |
+ WS_VISIBLE,0,0,700,420,fend_hwnd,NULL,
+ GetModuleHandle(NULL),NULL);
+ sprintf(widbuf,"SDL_WINDOWID=%#x",(long)qemu_hwnd);
+ putenv(widbuf);
+ break;
+#endif
#ifdef TARGET_I386
case QEMU_OPTION_win2k_hack:
win2k_install_hack = 1;
--- sdl.c Thu May 26 11:03:50 2005
+++ sdl.c.new Thu May 26 11:03:44 2005
@@ -27,6 +27,9 @@
#ifndef _WIN32
#include <signal.h>
+#else
+#include <windows.h>
+extern HWND fend_hwnd,qemu_hwnd;
#endif
static SDL_Surface *screen;
@@ -66,6 +69,12 @@
ds->depth = screen->format->BitsPerPixel;
ds->width = w;
ds->height = h;
+#ifdef _WIN32
+ SetWindowPos(qemu_hwnd,NULL,0,0,w,h,SWP_NOMOVE |
+ SWP_NOREPOSITION | SWP_NOZORDER);
+ SetWindowPos(fend_hwnd,NULL,0,0,w,h,SWP_NOMOVE |
+ SWP_NOREPOSITION | SWP_NOZORDER);
+#endif
}
/* generic keyboard conversion */
@@ -258,6 +267,9 @@
if (gui_grab) {
strcat(buf, " - Press Ctrl-Alt to exit grab");
}
+#ifdef _WIN32
+ if (qemu_hwnd!=NULL)
+#endif
SDL_WM_SetCaption(buf, "QEMU");
}
-----------------------------------
Best regards.
Míguel
next reply other threads:[~2005-05-26 11:49 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-26 11:42 Miguel Angel Fraile [this message]
2005-05-26 12:10 ` [Qemu-devel] [PATCH] Embed QEmu screen on a custom window Christian MICHON
2005-05-26 12:43 ` Oliver Gerlich
2005-05-26 13:22 ` Christian MICHON
2005-05-26 20:03 ` Fabrice Bellard
2005-05-26 20:32 ` gtk [was Re: [Qemu-devel] [PATCH] Embed QEmu screen on a custom window] Jim C. Brown
2005-05-26 21:09 ` Christian MICHON
2005-05-26 22:22 ` Mark Williamson
2005-05-27 6:07 ` Jim C. Brown
2005-05-27 10:59 ` [Qemu-devel] gtk2 driver Sebastien Bechet
2005-05-27 15:28 ` [Qemu-devel] " Jim C. Brown
2005-05-27 18:06 ` Jim C. Brown
2005-05-27 22:29 ` Jim C. Brown
2005-05-26 21:07 ` [Qemu-devel] [PATCH] Embed QEmu screen on a custom window Christian MICHON
2005-05-26 21:55 ` Fabrice Bellard
2005-05-27 14:39 ` Pierre d'Herbemont
2005-05-28 13:17 ` Christian MICHON
2005-05-28 14:10 ` Oliver Gerlich
2005-05-28 15:35 ` Joe Batt
2005-05-26 21:39 ` Jernej Simončič
-- strict thread matches above, loose matches on Subject: below --
2005-05-26 15:14 Christian Bourque
2005-05-26 19:24 ` Christian MICHON
2005-05-28 12:37 ` Jerome Warnier
2005-05-27 10:50 Miguel Angel Fraile
2005-05-28 7:13 Sylvain Petreolle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=26b3ab7050526044214f0ff81@mail.gmail.com \
--to=mianfrar@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).