78void QWaylandIviApplication::initialize()
80 Q_D(QWaylandIviApplication);
81 QWaylandCompositorExtensionTemplate::initialize();
83 QWaylandCompositor *compositor =
static_cast<QWaylandCompositor *>(extensionContainer());
85 qWarning() <<
"Failed to find QWaylandCompositor when initializing QWaylandIviApplication";
89 d->init(compositor->display(), 1);
149void QWaylandIviApplicationPrivate::ivi_application_surface_create(QtWaylandServer::ivi_application::Resource *resource,
150 uint32_t ivi_id, wl_resource *surfaceResource, uint32_t id)
152 Q_Q(QWaylandIviApplication);
153 QWaylandSurface *surface = QWaylandSurface::fromResource(surfaceResource);
155 if (m_iviSurfaces.contains(ivi_id)) {
156 wl_resource_post_error(resource->handle, IVI_APPLICATION_ERROR_IVI_ID,
157 "Given ivi_id, %d, is already assigned to wl_surface@%d", ivi_id,
158 wl_resource_get_id(m_iviSurfaces[ivi_id]->surface()->resource()));
162 if (!surface->setRole(QWaylandIviSurface::role(), resource->handle, IVI_APPLICATION_ERROR_ROLE))
165 QWaylandResource iviSurfaceResource(wl_resource_create(resource->client(), &ivi_surface_interface,
166 wl_resource_get_version(resource->handle), id));
168 emit q->iviSurfaceRequested(surface, ivi_id, iviSurfaceResource);
170 QWaylandIviSurface *iviSurface = QWaylandIviSurface::fromResource(iviSurfaceResource.resource());
173 iviSurface =
new QWaylandIviSurface(q, surface, ivi_id, iviSurfaceResource);
175 m_iviSurfaces.insert(ivi_id, iviSurface);
177 emit q->iviSurfaceCreated(iviSurface);