summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper/wloutput.cpp
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2011-12-19 10:51:12 +0100
committerLaszlo Agocs <laszlo.p.agocs@nokia.com>2011-12-20 13:58:55 +0100
commit317d72460806e86cacdb46ebe9c0b034b06a1cf4 (patch)
treef2aea2381a46c30276acaf67f358f5969f26f52c /src/compositor/wayland_wrapper/wloutput.cpp
parenta318254dfb7c15ed92d38c5d5cf94d9de893dfb4 (diff)
Added surface_extension and output_extension
This is an atempt on removing WindowManagerIntegration and create more specialised extensions. Hopefully it will reduce tha "map lookups" we have all because of the windowmanagerintegration is way to generic, and hopefully it will make it easier to ready and understand the code Change-Id: I126c430e87909e4520f6d241c0a6023214cb509a Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Diffstat (limited to 'src/compositor/wayland_wrapper/wloutput.cpp')
-rw-r--r--src/compositor/wayland_wrapper/wloutput.cpp60
1 files changed, 45 insertions, 15 deletions
diff --git a/src/compositor/wayland_wrapper/wloutput.cpp b/src/compositor/wayland_wrapper/wloutput.cpp
index 0221107f0..c7c7d0ccb 100644
--- a/src/compositor/wayland_wrapper/wloutput.cpp
+++ b/src/compositor/wayland_wrapper/wloutput.cpp
@@ -45,33 +45,63 @@
namespace Wayland {
-void Output::output_bind_func(struct wl_client *client, void *data,
+OutputGlobal::OutputGlobal()
+ : m_displayId(-1)
+ , m_numQueued(0)
+{
+ QScreen *screen = QGuiApplication::primaryScreen();
+ m_geometry = QRect(QPoint(0, 0), screen->availableGeometry().size());
+}
+
+void OutputGlobal::setGeometry(const QRect &geometry)
+{
+ m_geometry = geometry;
+}
+
+Output *OutputGlobal::outputForClient(wl_client *client) const
+{
+ return static_cast<Output *>(resourceForClient(client)->data);
+}
+
+void OutputGlobal::output_bind_func(struct wl_client *client, void *data,
uint32_t version, uint32_t id)
{
Q_UNUSED(version);
- Output *output = static_cast<Output *>(data);
+ OutputGlobal *output_global = static_cast<OutputGlobal *>(data);
- struct wl_resource *resource = wl_client_add_object(client,&wl_output_interface,0,id,data);
- output->registerResource(resource);
- wl_resource_post_event(resource, WL_OUTPUT_GEOMETRY, 0, 0,
- output->size().width(), output->size().height(),0,"","");
+ Output *output = new Output(output_global,client,version,id);
+ output_global->registerResource(output->handle());
+}
+
+
+
+Output::Output(OutputGlobal *outputGlobal, wl_client *client, uint32_t version, uint32_t id)
+ : m_output_global(outputGlobal)
+ , m_extended_output(0)
+{
+ Q_UNUSED(version);
+ m_output_resource = wl_client_add_object(client,&wl_output_interface,0,id,this);
+ wl_resource_post_event(m_output_resource, WL_OUTPUT_GEOMETRY, 0, 0,
+ m_output_global->size().width(), m_output_global->size().height(),0,"","");
+
+ wl_resource_post_event(m_output_resource,WL_OUTPUT_MODE, WL_OUTPUT_MODE_CURRENT|WL_OUTPUT_MODE_PREFERRED,
+ m_output_global->size().width(),m_output_global->size().height());
- wl_resource_post_event(resource,WL_OUTPUT_MODE, WL_OUTPUT_MODE_CURRENT|WL_OUTPUT_MODE_PREFERRED,
- output->size().width(),output->size().height());
}
+ExtendedOutput *Output::extendedOutput() const
+{
+ return m_extended_output;
+}
-Output::Output()
- : m_displayId(-1)
- , m_numQueued(0)
+void Output::setExtendedOutput(ExtendedOutput *extendedOutput)
{
- QScreen *screen = QGuiApplication::primaryScreen();
- m_geometry = QRect(QPoint(0, 0), screen->availableGeometry().size());
+ m_extended_output = extendedOutput;
}
-void Output::setGeometry(const QRect &geometry)
+wl_resource *Output::handle() const
{
- m_geometry = geometry;
+ return m_output_resource;
}
} // namespace Wayland