Loading widget/gtk/nsWaylandDisplay.cpp +12 −16 Original line number Diff line number Diff line Loading @@ -58,33 +58,29 @@ nsWaylandDisplay* WaylandDisplayGet() { void nsWaylandDisplay::SetShm(wl_shm* aShm) { mShm = aShm; } class EventSurface { class TouchWindow { public: nsWindow* GetWindow() { if (!surface) { return nullptr; } already_AddRefed<nsWindow> GetAndClearWindow() { return mWindow.forget(); } RefPtr<nsWindow> TakeWindow(wl_surface* aSurface) { GdkWindow* window = static_cast<GdkWindow*>(wl_surface_get_user_data(surface)); return window ? static_cast<nsWindow*>( static_cast<GdkWindow*>(wl_surface_get_user_data(aSurface)); mWindow = window ? static_cast<nsWindow*>( g_object_get_data(G_OBJECT(window), "nsWindow")) : nullptr; return mWindow; } void Set(wl_surface* aSurface) { surface = aSurface; } void Clear() { surface = nullptr; } private: wl_surface* surface = nullptr; StaticRefPtr<nsWindow> mWindow; }; static EventSurface sTouchSurface; static TouchWindow sTouchWindow; static void gesture_hold_begin(void* data, struct zwp_pointer_gesture_hold_v1* hold, uint32_t serial, uint32_t time, struct wl_surface* surface, uint32_t fingers) { sTouchSurface.Set(surface); RefPtr<nsWindow> window = sTouchSurface.GetWindow(); RefPtr<nsWindow> window = sTouchWindow.TakeWindow(surface); if (!window) { return; } Loading @@ -95,7 +91,7 @@ static void gesture_hold_end(void* data, struct zwp_pointer_gesture_hold_v1* hold, uint32_t serial, uint32_t time, int32_t cancelled) { RefPtr<nsWindow> window = sTouchSurface.GetWindow(); RefPtr<nsWindow> window = sTouchWindow.GetAndClearWindow(); if (!window) { return; } Loading Loading
widget/gtk/nsWaylandDisplay.cpp +12 −16 Original line number Diff line number Diff line Loading @@ -58,33 +58,29 @@ nsWaylandDisplay* WaylandDisplayGet() { void nsWaylandDisplay::SetShm(wl_shm* aShm) { mShm = aShm; } class EventSurface { class TouchWindow { public: nsWindow* GetWindow() { if (!surface) { return nullptr; } already_AddRefed<nsWindow> GetAndClearWindow() { return mWindow.forget(); } RefPtr<nsWindow> TakeWindow(wl_surface* aSurface) { GdkWindow* window = static_cast<GdkWindow*>(wl_surface_get_user_data(surface)); return window ? static_cast<nsWindow*>( static_cast<GdkWindow*>(wl_surface_get_user_data(aSurface)); mWindow = window ? static_cast<nsWindow*>( g_object_get_data(G_OBJECT(window), "nsWindow")) : nullptr; return mWindow; } void Set(wl_surface* aSurface) { surface = aSurface; } void Clear() { surface = nullptr; } private: wl_surface* surface = nullptr; StaticRefPtr<nsWindow> mWindow; }; static EventSurface sTouchSurface; static TouchWindow sTouchWindow; static void gesture_hold_begin(void* data, struct zwp_pointer_gesture_hold_v1* hold, uint32_t serial, uint32_t time, struct wl_surface* surface, uint32_t fingers) { sTouchSurface.Set(surface); RefPtr<nsWindow> window = sTouchSurface.GetWindow(); RefPtr<nsWindow> window = sTouchWindow.TakeWindow(surface); if (!window) { return; } Loading @@ -95,7 +91,7 @@ static void gesture_hold_end(void* data, struct zwp_pointer_gesture_hold_v1* hold, uint32_t serial, uint32_t time, int32_t cancelled) { RefPtr<nsWindow> window = sTouchSurface.GetWindow(); RefPtr<nsWindow> window = sTouchWindow.GetAndClearWindow(); if (!window) { return; } Loading