summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin DuBois <kevin.dubois@canonical.com>2015-02-12 10:56:27 -0500
committerKevin DuBois <kevin.dubois@canonical.com>2015-02-12 10:56:27 -0500
commit80c3c0d37c18f83a70a2df5afd50b8419cda0ecb (patch)
tree5747cbec768a6d2556496490351e457d8f37745a /src
parent5708bad137836ba767eeb591eb85f3d686cae370 (diff)
adapt for changes to mg::DisplayBuffer
Diffstat (limited to 'src')
-rw-r--r--src/modules/Unity/Application/application_manager.cpp7
-rw-r--r--src/platforms/mirserver/displaywindow.cpp8
-rw-r--r--src/platforms/mirserver/displaywindow.h4
-rw-r--r--src/platforms/mirserver/mirserverintegration.cpp15
4 files changed, 24 insertions, 10 deletions
diff --git a/src/modules/Unity/Application/application_manager.cpp b/src/modules/Unity/Application/application_manager.cpp
index 0fb5ad9..c54c881 100644
--- a/src/modules/Unity/Application/application_manager.cpp
+++ b/src/modules/Unity/Application/application_manager.cpp
@@ -67,12 +67,13 @@ bool forceAllAppsIntoMainStage(const QSharedPointer<MirServer> &mirServer)
const int tabletModeMinimimWithGU = 100;
// Obtain display size
+ //TODO: should use mir::graphics::Display::configuration
mir::geometry::Rectangles view_area;
- mirServer->the_display()->for_each_display_buffer(
- [&view_area](const mir::graphics::DisplayBuffer & db)
- {
+ mirServer->the_display()->for_each_display_group([&view_area](mir::graphics::DisplayGroup& group) {
+ group.for_each_display_buffer([&view_area](const mir::graphics::DisplayBuffer & db) {
view_area.add(db.view_area());
});
+ });
// Get current Grid Unit value
int gridUnitPx = 8;
diff --git a/src/platforms/mirserver/displaywindow.cpp b/src/platforms/mirserver/displaywindow.cpp
index e6f9e2d..cb06b87 100644
--- a/src/platforms/mirserver/displaywindow.cpp
+++ b/src/platforms/mirserver/displaywindow.cpp
@@ -36,10 +36,14 @@ static WId newWId()
return ++id;
}
-DisplayWindow::DisplayWindow(QWindow *window, mir::graphics::DisplayBuffer *displayBuffer)
+DisplayWindow::DisplayWindow(
+ QWindow *window,
+ mir::graphics::DisplayGroup *displayGroup,
+ mir::graphics::DisplayBuffer *displayBuffer)
: QObject(nullptr), QPlatformWindow(window)
, m_isExposed(true)
, m_winId(newWId())
+ , m_displayGroup(displayGroup)
, m_displayBuffer(displayBuffer)
{
qDebug() << "DisplayWindow::DisplayWindow";
@@ -101,7 +105,7 @@ bool DisplayWindow::event(QEvent *event)
void DisplayWindow::swapBuffers()
{
m_displayBuffer->gl_swap_buffers();
- m_displayBuffer->flip();
+ m_displayGroup->post();
}
void DisplayWindow::makeCurrent()
diff --git a/src/platforms/mirserver/displaywindow.h b/src/platforms/mirserver/displaywindow.h
index 8714702..d9d0475 100644
--- a/src/platforms/mirserver/displaywindow.h
+++ b/src/platforms/mirserver/displaywindow.h
@@ -21,6 +21,7 @@
#include <qpa/qplatformwindow.h>
+#include <mir/graphics/display.h>
#include <mir/graphics/display_buffer.h>
#include <QObject>
@@ -32,7 +33,7 @@ class DisplayWindow : public QObject, public QPlatformWindow
{
Q_OBJECT
public:
- explicit DisplayWindow(QWindow *window, mir::graphics::DisplayBuffer*);
+ explicit DisplayWindow(QWindow *window, mir::graphics::DisplayGroup*, mir::graphics::DisplayBuffer*);
QRect geometry() const override;
void setGeometry(const QRect &rect) override;
@@ -50,6 +51,7 @@ public:
private:
bool m_isExposed;
WId m_winId;
+ mir::graphics::DisplayGroup *m_displayGroup;
mir::graphics::DisplayBuffer *m_displayBuffer;
};
diff --git a/src/platforms/mirserver/mirserverintegration.cpp b/src/platforms/mirserver/mirserverintegration.cpp
index 14e7033..260f73a 100644
--- a/src/platforms/mirserver/mirserverintegration.cpp
+++ b/src/platforms/mirserver/mirserverintegration.cpp
@@ -135,12 +135,19 @@ QPlatformWindow *MirServerIntegration::createPlatformWindow(QWindow *window) con
DisplayWindow* displayWindow = nullptr;
- m_mirServer->the_display()->for_each_display_buffer(
- [&](mg::DisplayBuffer& buffer) {
- // FIXME(gerry) this will go very bad for >1 display buffer
- displayWindow = new DisplayWindow(window, &buffer);
+ mg::DisplayBuffer* first_buffer{nullptr};
+ mg::DisplayGroup* first_group{nullptr};
+ m_mirServer->the_display()->for_each_display_group([&](mg::DisplayGroup& group) {
+ if (!first_group) first_group = &group;
+ group.for_each_display_buffer([&](mg::DisplayBuffer& buffer) {
+ if (!first_buffer) first_buffer = &buffer;
+ });
});
+ // FIXME(gerry) this will go very bad for >1 display buffer
+ if (first_group && first_buffer)
+ displayWindow = new DisplayWindow(window, first_group, first_buffer);
+
if (!displayWindow)
return nullptr;