mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-07 16:38:33 +02:00
desktop-shell: fix the crash while clicking TRANSIENT_INACTIVE window
It is pretty easy to replicate this bug by involving a Qt Window with
Qt::WindowTransparentForInput flag.
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
QDialog d1(&w, Qt::WindowTransparentForInput);
d1.show();
return a.exec();
}
Click d1 dialog, weston will crash due to NULL==shruf.
Signed-off-by: Barry Song <barry.song@navico.com>
This commit is contained in:
parent
3a28bd66ff
commit
854cac8eb1
1 changed files with 8 additions and 3 deletions
|
|
@ -2697,11 +2697,16 @@ desktop_surface_move(struct weston_desktop_surface *desktop_surface,
|
|||
struct weston_touch *touch = weston_seat_get_touch(seat);
|
||||
struct shell_surface *shsurf =
|
||||
weston_desktop_surface_get_user_data(desktop_surface);
|
||||
struct weston_surface *surface =
|
||||
weston_desktop_surface_get_surface(shsurf->desktop_surface);
|
||||
struct wl_resource *resource = surface->resource;
|
||||
struct weston_surface *surface;
|
||||
struct wl_resource *resource;
|
||||
struct weston_surface *focus;
|
||||
|
||||
if (!shsurf)
|
||||
return;
|
||||
|
||||
surface = weston_desktop_surface_get_surface(shsurf->desktop_surface);
|
||||
resource = surface->resource;
|
||||
|
||||
if (pointer &&
|
||||
pointer->focus &&
|
||||
pointer->button_count > 0 &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue