79void QWaylandIviApplication::initialize()
81 Q_D(QWaylandIviApplication);
82 QWaylandCompositorExtensionTemplate::initialize();
84 QWaylandCompositor *compositor =
static_cast<QWaylandCompositor *>(extensionContainer());
86 qWarning() <<
"Failed to find QWaylandCompositor when initializing QWaylandIviApplication";
90 d->init(compositor->display(), 1);
150void QWaylandIviApplicationPrivate::ivi_application_surface_create(QtWaylandServer::ivi_application::Resource *resource,
151 uint32_t ivi_id, wl_resource *surfaceResource, uint32_t id)
153 Q_Q(QWaylandIviApplication);
154 QWaylandSurface *surface = QWaylandSurface::fromResource(surfaceResource);
156 if (m_iviSurfaces.contains(ivi_id)) {
157 wl_resource_post_error(resource->handle, IVI_APPLICATION_ERROR_IVI_ID,
158 "Given ivi_id, %d, is already assigned to wl_surface@%d", ivi_id,
159 wl_resource_get_id(m_iviSurfaces[ivi_id]->surface()->resource()));
163 if (!surface->setRole(QWaylandIviSurface::role(), resource->handle, IVI_APPLICATION_ERROR_ROLE))
166 QWaylandResource iviSurfaceResource(wl_resource_create(resource->client(), &ivi_surface_interface,
167 wl_resource_get_version(resource->handle), id));
169 emit q->iviSurfaceRequested(surface, ivi_id, iviSurfaceResource);
171 QWaylandIviSurface *iviSurface = QWaylandIviSurface::fromResource(iviSurfaceResource.resource());
174 iviSurface =
new QWaylandIviSurface(q, surface, ivi_id, iviSurfaceResource);
176 m_iviSurfaces.insert(ivi_id, iviSurface);
178 emit q->iviSurfaceCreated(iviSurface);