From d221400332d3f7e6d04d8713b1735b2a14921029 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B8rgen=20Lind?= Date: Fri, 6 May 2011 10:30:15 +0200 Subject: [PATCH] Add invertedY flag for surface --- src/qt-compositor/compositor_api/waylandsurface.cpp | 6 ++++++ src/qt-compositor/compositor_api/waylandsurface.h | 1 + src/qt-compositor/compositor_api/waylandsurfaceitem.cpp | 5 +++++ src/qt-compositor/compositor_api/waylandsurfaceitem.h | 2 ++ .../hardware_integration/graphicshardwareintegration.h | 1 + src/qt-compositor/wayland_wrapper/wlsurface.cpp | 9 +++++++++ src/qt-compositor/wayland_wrapper/wlsurface.h | 1 + 7 files changed, 25 insertions(+) diff --git a/src/qt-compositor/compositor_api/waylandsurface.cpp b/src/qt-compositor/compositor_api/waylandsurface.cpp index 5a37459..ccc938d 100644 --- a/src/qt-compositor/compositor_api/waylandsurface.cpp +++ b/src/qt-compositor/compositor_api/waylandsurface.cpp @@ -25,6 +25,12 @@ WaylandSurface::Type WaylandSurface::type() const return d->surface->type(); } +bool WaylandSurface::isYInverted() const +{ + Q_D(const WaylandSurface); + return d->surface->isYInverted(); +} + QRect WaylandSurface::geometry() const { Q_D(const WaylandSurface); diff --git a/src/qt-compositor/compositor_api/waylandsurface.h b/src/qt-compositor/compositor_api/waylandsurface.h index 2cf71b6..b429190 100644 --- a/src/qt-compositor/compositor_api/waylandsurface.h +++ b/src/qt-compositor/compositor_api/waylandsurface.h @@ -69,6 +69,7 @@ public: WaylandSurface(Wayland::Surface *surface); Type type() const; + bool isYInverted() const; void setGeometry(const QRect &geometry); QRect geometry() const; diff --git a/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp b/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp index e9cce77..b10d219 100644 --- a/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp +++ b/src/qt-compositor/compositor_api/waylandsurfaceitem.cpp @@ -113,6 +113,11 @@ void WaylandSurfaceItem::setSurface(WaylandSurface *surface) init(surface); } +bool WaylandSurfaceItem::isYInverted() const +{ + return m_surface->isYInverted(); +} + QSGTexture *WaylandSurfaceItem::texture() const { if (m_texture) diff --git a/src/qt-compositor/compositor_api/waylandsurfaceitem.h b/src/qt-compositor/compositor_api/waylandsurfaceitem.h index 50ca44e..acf0321 100644 --- a/src/qt-compositor/compositor_api/waylandsurfaceitem.h +++ b/src/qt-compositor/compositor_api/waylandsurfaceitem.h @@ -63,6 +63,8 @@ public: void setSurface(WaylandSurface *surface); WaylandSurface *surface() const {return m_surface; } + Q_INVOKABLE bool isYInverted() const; + QSGTexture *texture() const; const char *textureChangedSignal() const { return SIGNAL(textureChanged()); } diff --git a/src/qt-compositor/hardware_integration/graphicshardwareintegration.h b/src/qt-compositor/hardware_integration/graphicshardwareintegration.h index 9ed793e..9fa574e 100644 --- a/src/qt-compositor/hardware_integration/graphicshardwareintegration.h +++ b/src/qt-compositor/hardware_integration/graphicshardwareintegration.h @@ -58,6 +58,7 @@ public: so there is no need to do makeCurrent in this function. **/ virtual GLuint createTextureFromBuffer(struct wl_buffer *buffer) = 0; + virtual bool isYInverted(struct wl_buffer *) const { return false; } virtual bool setDirectRenderSurface(WaylandSurface *) {return false;} virtual bool postBuffer(struct wl_buffer *) {return false;} diff --git a/src/qt-compositor/wayland_wrapper/wlsurface.cpp b/src/qt-compositor/wayland_wrapper/wlsurface.cpp index 1fd77bc..c0eeace 100644 --- a/src/qt-compositor/wayland_wrapper/wlsurface.cpp +++ b/src/qt-compositor/wayland_wrapper/wlsurface.cpp @@ -193,6 +193,15 @@ WaylandSurface::Type Surface::type() const return d->type(); } +bool Surface::isYInverted() const +{ + Q_D(const Surface); + if (d->type() == WaylandSurface::Texture) { + return d->compositor->graphicsHWIntegration()->isYInverted(d->buffer()); + } + return false; +} + void Surface::damage(const QRect &rect) { Q_D(Surface); diff --git a/src/qt-compositor/wayland_wrapper/wlsurface.h b/src/qt-compositor/wayland_wrapper/wlsurface.h index 8ebcd31..bcbd3e5 100644 --- a/src/qt-compositor/wayland_wrapper/wlsurface.h +++ b/src/qt-compositor/wayland_wrapper/wlsurface.h @@ -71,6 +71,7 @@ public: ~Surface(); WaylandSurface::Type type() const; + bool isYInverted() const; uint id() const { return base()->resource.object.id; } void attach(struct wl_buffer *buffer); -- 2.7.4