[virt-tools-list] [PATCH virt-viewer 6/6] Use a mutex to check if VirtViewer running
Christophe Fergeau
cfergeau at redhat.com
Mon Oct 22 08:04:02 UTC 2012
I've already reviewed this one separately, is it any different?
Christophe
On Sat, Oct 20, 2012 at 12:57:31AM +0200, Marc-André Lureau wrote:
> We need to warn user that installer can't proceed if there is already
> a running instance of VirtViewer or of the installer.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=864033
> ---
> data/virt-viewer.nsis.in | 10 ++++++++++
> src/virt-viewer-util.c | 9 +++++++++
> 2 files changed, 19 insertions(+)
>
> diff --git a/data/virt-viewer.nsis.in b/data/virt-viewer.nsis.in
> index 45af104..d73fd73 100644
> --- a/data/virt-viewer.nsis.in
> +++ b/data/virt-viewer.nsis.in
> @@ -45,6 +45,16 @@ Function RegisterApplication
> WriteRegDWord HKCU "${REG_IEPOLICY}" "Policy" 3
> FunctionEnd
>
> +Function .onInit
> +retry:
> + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "VirtViewerMutex") i .r1 ?e'
> + Pop $R0
> + StrCmp $R0 0 +3
> + MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "VirtViewer is already running, quit any instance and retry." IDRETRY retry IDCANCEL cancel
> +cancel:
> + Abort
> +FunctionEnd
> +
> Section "VirtViewer"
> SectionIn RO
> WriteRegStr HKCU "Software\virt-viewer" "" $INSTDIR
> diff --git a/src/virt-viewer-util.c b/src/virt-viewer-util.c
> index 556638c..e99b106 100644
> --- a/src/virt-viewer-util.c
> +++ b/src/virt-viewer-util.c
> @@ -263,6 +263,15 @@ gulong virt_viewer_signal_connect_object(gpointer instance,
> void virt_viewer_util_init(const gchar *appname)
> {
> #ifdef G_OS_WIN32
> + /*
> + * This named mutex will be kept around by Windows until the
> + * process terminates. This allows other instances to check if it
> + * already exists, indicating already running instances. It is
> + * used to warn the user that installer can't proceed in this
> + * case.
> + */
> + CreateMutexA(0, 0, "VirtViewerMutex");
> +
> if (AttachConsole(ATTACH_PARENT_PROCESS) != 0) {
> freopen("CONIN$", "r", stdin);
> freopen("CONOUT$", "w", stdout);
> --
> 1.7.11.7
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20121022/b3f4f15a/attachment.sig>
More information about the virt-tools-list
mailing list