<html>
<head>
<base href="https://bugzilla.gnome.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEEDINFO "
title="NEEDINFO - [Wayland] Crash under gdk_wayland_window_attach_image()"
href="https://bugzilla.gnome.org/show_bug.cgi?id=793062#c21">Comment # 21</a>
on <a class="bz_bug_link
bz_status_NEEDINFO "
title="NEEDINFO - [Wayland] Crash under gdk_wayland_window_attach_image()"
href="https://bugzilla.gnome.org/show_bug.cgi?id=793062">bug 793062</a>
from <span class="vcard"><a href="page.cgi?id=describeuser.html&login=ofourdan%40redhat.com" title="Olivier Fourdan <ofourdan@redhat.com>"> <span class="fn">Olivier Fourdan</span></a>
</span></b>
<pre>FWIW, the code in gdk/gdkwindow.c with the patch applied should read as:
3802 static void
3803 _gdk_window_process_updates_recurse_helper (GdkWindow *window,
3804 cairo_region_t
*expose_region)
3805 {
...
3835 /* While gtk+ no longer handles exposes on anything but native
3836 window we still have to send them to all windows that have the
3837 event mask set for backwards compat. We also need to send
3838 it to all native windows, even if they don't specify the
3839 expose mask, because they may have non-native children that do. */
3840 if (GDK_WINDOW_IS_MAPPED(window) &&
3841 (gdk_window_has_impl (window) ||
3842 window->event_mask & GDK_EXPOSURE_MASK))
3843 {
3844 GdkEvent event;
3845
3846 event.expose.type = GDK_EXPOSE;
3847 event.expose.window = window; /* we already hold a ref */
3848 event.expose.send_event = FALSE;
3849 event.expose.count = 0;
3850 event.expose.region = clipped_expose_region;
3851 cairo_region_get_extents (clipped_expose_region,
&event.expose.area);
3852
3853 _gdk_event_emit (&event);
3854 }
3855
So we should not get to _gdk_event_emit() line 3853 with “state =
(GDK_WINDOW_STATE_WITHDRAWN | GDK_WINDOW_STATE_FOCUSED)” because we're within
“if (GDK_WINDOW_IS_MAPPED(window) && ...) { }” line 3840</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>