[virt-tools-list] [PATCH virt-viewer] win32: process message queue in debug-helper
Marc-André Lureau
marcandre.lureau at gmail.com
Wed Feb 6 12:17:59 UTC 2013
ping
On Wed, Jan 23, 2013 at 8:10 PM, Marc-André Lureau
<marcandre.lureau at gmail.com> wrote:
> Avoid the spice-x from hanging in WaitForInputIdle(), although the
> client itself might not be ready, not even started...
>
> https://bugzilla.redhat.com/show_bug.cgi?id=903190
> ---
> src/debug-helper.c | 16 ++++++++++++++--
> 1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/src/debug-helper.c b/src/debug-helper.c
> index 0a9a923..01909da 100644
> --- a/src/debug-helper.c
> +++ b/src/debug-helper.c
> @@ -24,6 +24,7 @@ int
> main(int argc, char *argv[])
> {
> char pipe[2048];
> + MSG msg;
> STARTUPINFO si = { 0, };
> PROCESS_INFORMATION pi = { 0, };
> gchar *program_path = get_program_path();
> @@ -55,8 +56,19 @@ main(int argc, char *argv[])
> goto end;
> }
>
> - // Wait until child process exits
> - WaitForSingleObject(pi.hProcess, INFINITE);
> +
> + while (1) {
> + DWORD reason = MsgWaitForMultipleObjects(1, &pi.hProcess, FALSE,
> + INFINITE, QS_ALLINPUT);
> + if (reason == WAIT_OBJECT_0)
> + break;
> + else {
> + if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
> + TranslateMessage(&msg);
> + DispatchMessage(&msg);
> + }
> + }
> + }
>
> // Close process and thread handles
> CloseHandle(pi.hProcess);
> --
> 1.8.1.rc1.17.g75ed918
>
--
Marc-André Lureau
More information about the virt-tools-list
mailing list