wayland: Fix initial cursor

Make sure the initial cursor isn't random which would happen due to an
early exit when cursor == pointer->cursor triggered because both were
NULL.
This commit is contained in:
Benjamin Otte 2017-11-15 19:05:48 +01:00
parent 4c4e914806
commit e9629a5149

View File

@ -28,6 +28,7 @@
#include "gdkseat-wayland.h" #include "gdkseat-wayland.h"
#include "gdkwayland.h" #include "gdkwayland.h"
#include "gdkkeysyms.h" #include "gdkkeysyms.h"
#include "gdkcursorprivate.h"
#include "gdkdeviceprivate.h" #include "gdkdeviceprivate.h"
#include "gdkdevicepadprivate.h" #include "gdkdevicepadprivate.h"
#include "gdkdevicetoolprivate.h" #include "gdkdevicetoolprivate.h"
@ -501,18 +502,24 @@ gdk_wayland_device_set_window_cursor (GdkDevice *device,
if (seat->grab_cursor) if (seat->grab_cursor)
cursor = seat->grab_cursor; cursor = seat->grab_cursor;
if (cursor == pointer->cursor) if (cursor == NULL)
return; cursor = gdk_cursor_new_from_name ("default", NULL);
else
cursor = g_object_ref (cursor);
if (pointer->cursor != NULL &&
gdk_cursor_equal (cursor, pointer->cursor))
{
g_object_unref (cursor);
return;
}
gdk_wayland_pointer_stop_cursor_animation (pointer); gdk_wayland_pointer_stop_cursor_animation (pointer);
if (pointer->cursor) if (pointer->cursor)
g_object_unref (pointer->cursor); g_object_unref (pointer->cursor);
if (cursor == NULL) pointer->cursor = cursor;
pointer->cursor = gdk_cursor_new_from_name ("default", NULL);
else
pointer->cursor = g_object_ref (cursor);
gdk_wayland_device_update_window_cursor (device); gdk_wayland_device_update_window_cursor (device);
} }