Wayland: draw opaque background when OpenGL alpha is enabled
This commit is contained in:

committed by
Campbell Barton

parent
cfa788cf9a
commit
59e48d8fe4
@@ -180,6 +180,10 @@ GHOST_WindowWayland::GHOST_WindowWayland(GHOST_SystemWayland *system,
|
|||||||
wl_surface_commit(w->surface);
|
wl_surface_commit(w->surface);
|
||||||
wl_display_roundtrip(m_system->display());
|
wl_display_roundtrip(m_system->display());
|
||||||
|
|
||||||
|
#ifdef GHOST_OPENGL_ALPHA
|
||||||
|
setOpaque();
|
||||||
|
#endif
|
||||||
|
|
||||||
setState(state);
|
setState(state);
|
||||||
|
|
||||||
setTitle(title);
|
setTitle(title);
|
||||||
@@ -214,6 +218,10 @@ GHOST_TSuccess GHOST_WindowWayland::deactivate()
|
|||||||
|
|
||||||
GHOST_TSuccess GHOST_WindowWayland::notify_size()
|
GHOST_TSuccess GHOST_WindowWayland::notify_size()
|
||||||
{
|
{
|
||||||
|
#ifdef GHOST_OPENGL_ALPHA
|
||||||
|
setOpaque();
|
||||||
|
#endif
|
||||||
|
|
||||||
return m_system->pushEvent(
|
return m_system->pushEvent(
|
||||||
new GHOST_Event(m_system->getMilliSeconds(), GHOST_kEventWindowSize, this));
|
new GHOST_Event(m_system->getMilliSeconds(), GHOST_kEventWindowSize, this));
|
||||||
}
|
}
|
||||||
@@ -385,6 +393,19 @@ bool GHOST_WindowWayland::isDialog() const
|
|||||||
return w->is_dialog;
|
return w->is_dialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef GHOST_OPENGL_ALPHA
|
||||||
|
void GHOST_WindowWayland::setOpaque() const
|
||||||
|
{
|
||||||
|
struct wl_region *region;
|
||||||
|
|
||||||
|
/* Make the window opaque. */
|
||||||
|
region = wl_compositor_create_region(m_system->compositor());
|
||||||
|
wl_region_add(region, 0, 0, w->width, w->height);
|
||||||
|
wl_surface_set_opaque_region(w->surface, region);
|
||||||
|
wl_region_destroy(region);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \param type The type of rendering context create.
|
* \param type The type of rendering context create.
|
||||||
* \return Indication of success.
|
* \return Indication of success.
|
||||||
|
@@ -109,6 +109,10 @@ class GHOST_WindowWayland : public GHOST_Window {
|
|||||||
|
|
||||||
bool isDialog() const override;
|
bool isDialog() const override;
|
||||||
|
|
||||||
|
#ifdef GHOST_OPENGL_ALPHA
|
||||||
|
void setOpaque() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GHOST_SystemWayland *m_system;
|
GHOST_SystemWayland *m_system;
|
||||||
struct window_t *w;
|
struct window_t *w;
|
||||||
|
Reference in New Issue
Block a user