Code Review
/
staging
/
windowmanager.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
main: check that outputs are available before running main loop
[staging/windowmanager.git]
/
src
/
wayland.cpp
diff --git
a/src/wayland.cpp
b/src/wayland.cpp
index
5b526ec
..
52b2371
100644
(file)
--- a/
src/wayland.cpp
+++ b/
src/wayland.cpp
@@
-200,6
+200,14
@@
controller::controller(struct wl_registry *r, uint32_t name, uint32_t version)
controller::~controller() {}
controller::~controller() {}
+void controller::layer_create(uint32_t id, int32_t w, int32_t h) {
+ this->layers[id] = std::make_unique<layer>(id, w, h, this);
+}
+
+void controller::surface_create(uint32_t id) {
+ this->surfaces[id] = std::make_unique<surface>(id, this);
+}
+
void controller::controller_screen(uint32_t id,
struct ivi_controller_screen *screen) {
logdebug("genivi::controller @ %p screen %u (%x) @ %p", this->proxy, id, id,
void controller::controller_screen(uint32_t id,
struct ivi_controller_screen *screen) {
logdebug("genivi::controller @ %p screen %u (%x) @ %p", this->proxy, id, id,
@@
-294,7
+302,11
@@
constexpr struct ivi_controller_layer_listener layer_listener = {
}
layer::layer(uint32_t i, struct controller *c)
}
layer::layer(uint32_t i, struct controller *c)
- : wayland_proxy(ivi_controller_layer_create(c->proxy, i, 0, 0)),
+ : layer(i, 0, 0, c) {
+}
+
+layer::layer(uint32_t i, int32_t w, int32_t h, struct controller *c)
+ : wayland_proxy(ivi_controller_layer_create(c->proxy, i, w, h)),
controlled_entity(c, i) {
ivi_controller_layer_add_listener(this->proxy, &layer_listener, this);
}
controlled_entity(c, i) {
ivi_controller_layer_add_listener(this->proxy, &layer_listener, this);
}
@@
-500,11
+512,11
@@
void controller::surface_configuration(uint32_t id, int32_t width,
bool center = s->size.w != width && s->size.h != height;
s->size = size{uint32_t(width), uint32_t(height)};
if (center)
bool center = s->size.w != width && s->size.h != height;
s->size = size{uint32_t(width), uint32_t(height)};
if (center)
- add_task([id, width, height](struct controller *c) {
auto const s = c->surfaces.find(id);
if (s != c->surfaces.end())
s->second->set_destination_rectangle(
800 / 2 - width / 2, 600 / 2 - height / 2, width, height);
auto const s = c->surfaces.find(id);
if (s != c->surfaces.end())
s->second->set_destination_rectangle(
800 / 2 - width / 2, 600 / 2 - height / 2, width, height);
+ add_task("fullscreen surface", [id, width, height](struct controller *c) {
});
}
});
}
@@
-538,9
+550,9
@@
void controller::surface_destroyed(uint32_t id) {
void controller::surface_content(uint32_t id, int32_t content_state) {
logdebug("genivi::surface %s @ %p s %i", __func__, this->proxy,
content_state);
void controller::surface_content(uint32_t id, int32_t content_state) {
logdebug("genivi::surface %s @ %p s %i", __func__, this->proxy,
content_state);
-
if (content_state == IVI_CONTROLLER_SURFACE_CONTENT_STATE_CONTENT_REMOVED) {
if (content_state == IVI_CONTROLLER_SURFACE_CONTENT_STATE_CONTENT_REMOVED) {
- this->surfaces.erase(id);
+ add_task("remove surface",
+ [id](struct controller *c) { c->surfaces.erase(id); });
}
}
}
}