Bug 1946586 - Set opaque region even without an EGL window. r=stransky, a=dsmith
Differential Revision: https://phabricator.services.mozilla.com/D254738
This commit is contained in:
committed by
dsmith@mozilla.com
parent
97039c7694
commit
1680854f3b
@@ -272,10 +272,8 @@ static bool moz_container_wayland_ensure_surface(MozContainer* container,
|
|||||||
surface->EnableCeiledScaleLocked(lock);
|
surface->EnableCeiledScaleLocked(lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MOZ_WL_CONTAINER(container)->opaque_region_needs_updates) {
|
surface->SetOpaqueRegionLocked(lock,
|
||||||
surface->SetOpaqueRegionLocked(lock,
|
window->GetOpaqueRegion().ToUnknownRegion());
|
||||||
window->GetOpaqueRegion().ToUnknownRegion());
|
|
||||||
}
|
|
||||||
surface->DisableUserInputLocked(lock);
|
surface->DisableUserInputLocked(lock);
|
||||||
|
|
||||||
// Commit eplicitly now as moz_container_wayland_invalidate() initiated
|
// Commit eplicitly now as moz_container_wayland_invalidate() initiated
|
||||||
@@ -305,22 +303,10 @@ struct wl_egl_window* moz_container_wayland_get_egl_window(
|
|||||||
return MOZ_WL_SURFACE(container)->GetEGLWindow(unscaledSize);
|
return MOZ_WL_SURFACE(container)->GetEGLWindow(unscaledSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean moz_container_wayland_has_egl_window(MozContainer* container) {
|
|
||||||
return MOZ_WL_SURFACE(container)->HasEGLWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
void moz_container_wayland_update_opaque_region(MozContainer* container) {
|
void moz_container_wayland_update_opaque_region(MozContainer* container) {
|
||||||
MOZ_WL_CONTAINER(container)->opaque_region_needs_updates = true;
|
nsWindow* window = moz_container_get_nsWindow(container);
|
||||||
|
MOZ_WL_SURFACE(container)->SetOpaqueRegion(
|
||||||
// When GL compositor / WebRender is used,
|
window->GetOpaqueRegion().ToUnknownRegion());
|
||||||
// moz_container_wayland_get_egl_window() is called only once when window
|
|
||||||
// is created or resized so update opaque region now.
|
|
||||||
if (MOZ_WL_SURFACE(container)->HasEGLWindow()) {
|
|
||||||
MOZ_WL_CONTAINER(container)->opaque_region_needs_updates = false;
|
|
||||||
nsWindow* window = moz_container_get_nsWindow(container);
|
|
||||||
MOZ_WL_SURFACE(container)->SetOpaqueRegion(
|
|
||||||
window->GetOpaqueRegion().ToUnknownRegion());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean moz_container_wayland_can_draw(MozContainer* container) {
|
gboolean moz_container_wayland_can_draw(MozContainer* container) {
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ struct MozContainerWayland {
|
|||||||
: mSurface(aSurface) {}
|
: mSurface(aSurface) {}
|
||||||
|
|
||||||
RefPtr<mozilla::widget::WaylandSurface> mSurface;
|
RefPtr<mozilla::widget::WaylandSurface> mSurface;
|
||||||
gboolean opaque_region_needs_updates = false;
|
|
||||||
gboolean before_first_size_alloc = false;
|
gboolean before_first_size_alloc = false;
|
||||||
gboolean waiting_to_show = false;
|
gboolean waiting_to_show = false;
|
||||||
};
|
};
|
||||||
@@ -56,7 +55,6 @@ void moz_container_wayland_unmap(GtkWidget*);
|
|||||||
struct wl_egl_window* moz_container_wayland_get_egl_window(
|
struct wl_egl_window* moz_container_wayland_get_egl_window(
|
||||||
MozContainer* container);
|
MozContainer* container);
|
||||||
|
|
||||||
gboolean moz_container_wayland_has_egl_window(MozContainer* container);
|
|
||||||
void moz_container_wayland_add_or_fire_initial_draw_callback(
|
void moz_container_wayland_add_or_fire_initial_draw_callback(
|
||||||
MozContainer* container, const std::function<void(void)>& initial_draw_cb);
|
MozContainer* container, const std::function<void(void)>& initial_draw_cb);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user