diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2011-12-19 10:51:12 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2011-12-20 13:58:55 +0100 |
commit | 317d72460806e86cacdb46ebe9c0b034b06a1cf4 (patch) | |
tree | f2aea2381a46c30276acaf67f358f5969f26f52c /src/compositor/wayland_wrapper/wloutput.cpp | |
parent | a318254dfb7c15ed92d38c5d5cf94d9de893dfb4 (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.cpp | 60 |
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 |