Commit dbc00aec authored by Gopal Prasad's avatar Gopal Prasad Committed by Alexandre Julliard

winewayland.drv: Set wayland app-id from the process name.

parent 13e12597
...@@ -253,6 +253,9 @@ void wayland_surface_make_toplevel(struct wayland_surface *surface) ...@@ -253,6 +253,9 @@ void wayland_surface_make_toplevel(struct wayland_surface *surface)
if (!surface->xdg_toplevel) goto err; if (!surface->xdg_toplevel) goto err;
xdg_toplevel_add_listener(surface->xdg_toplevel, &xdg_toplevel_listener, surface->hwnd); xdg_toplevel_add_listener(surface->xdg_toplevel, &xdg_toplevel_listener, surface->hwnd);
if (process_name)
xdg_toplevel_set_app_id(surface->xdg_toplevel, process_name);
wl_surface_commit(surface->wl_surface); wl_surface_commit(surface->wl_surface);
wl_display_flush(process_wayland.wl_display); wl_display_flush(process_wayland.wl_display);
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
* Globals * Globals
*/ */
extern char *process_name;
extern struct wayland process_wayland; extern struct wayland process_wayland;
/********************************************************************** /**********************************************************************
......
...@@ -24,11 +24,15 @@ ...@@ -24,11 +24,15 @@
#include "config.h" #include "config.h"
#include <stdlib.h>
#include "ntstatus.h" #include "ntstatus.h"
#define WIN32_NO_STATUS #define WIN32_NO_STATUS
#include "waylanddrv.h" #include "waylanddrv.h"
char *process_name = NULL;
static const struct user_driver_funcs waylanddrv_funcs = static const struct user_driver_funcs waylanddrv_funcs =
{ {
.pClipCursor = WAYLAND_ClipCursor, .pClipCursor = WAYLAND_ClipCursor,
...@@ -46,12 +50,42 @@ static const struct user_driver_funcs waylanddrv_funcs = ...@@ -46,12 +50,42 @@ static const struct user_driver_funcs waylanddrv_funcs =
.pwine_get_wgl_driver = WAYLAND_wine_get_wgl_driver, .pwine_get_wgl_driver = WAYLAND_wine_get_wgl_driver,
}; };
static void wayland_init_process_name(void)
{
WCHAR *p, *appname;
WCHAR appname_lower[MAX_PATH];
DWORD appname_len;
DWORD appnamez_size;
DWORD utf8_size;
int i;
appname = NtCurrentTeb()->Peb->ProcessParameters->ImagePathName.Buffer;
if ((p = wcsrchr(appname, '/'))) appname = p + 1;
if ((p = wcsrchr(appname, '\\'))) appname = p + 1;
appname_len = lstrlenW(appname);
if (appname_len == 0 || appname_len >= MAX_PATH) return;
for (i = 0; appname[i]; i++) appname_lower[i] = RtlDowncaseUnicodeChar(appname[i]);
appname_lower[i] = 0;
appnamez_size = (appname_len + 1) * sizeof(WCHAR);
if (!RtlUnicodeToUTF8N(NULL, 0, &utf8_size, appname_lower, appnamez_size) &&
(process_name = malloc(utf8_size)))
{
RtlUnicodeToUTF8N(process_name, utf8_size, &utf8_size, appname_lower, appnamez_size);
}
}
static NTSTATUS waylanddrv_unix_init(void *arg) static NTSTATUS waylanddrv_unix_init(void *arg)
{ {
/* Set the user driver functions now so that they are available during /* Set the user driver functions now so that they are available during
* our initialization. We clear them on error. */ * our initialization. We clear them on error. */
__wine_set_user_driver(&waylanddrv_funcs, WINE_GDI_DRIVER_VERSION); __wine_set_user_driver(&waylanddrv_funcs, WINE_GDI_DRIVER_VERSION);
wayland_init_process_name();
if (!wayland_process_init()) goto err; if (!wayland_process_init()) goto err;
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment