void DSWaylandCompositorPrivate::compositor_create_surface(wl_compositor::Resource *resource, uint32_t id)
{
+ DS_GET_PUB(DSWaylandCompositor);
+
DSWaylandClient *waylandClient = DSWaylandClient::fromWlClient(resource->client());
- auto waylandSurface = std::make_shared<DSWaylandSurface>(waylandClient, id);
- //TODO: add window to the zone
+ auto waylandSruface = std::make_shared<DSWaylandSurface>(waylandClient, id);
+
+ // emit a signal of the surface created
+ pub->__surfaceCreatedSignal.emit(waylandSruface);
}
void DSWaylandCompositorPrivate::compositor_create_region(wl_compositor::Resource *resource, uint32_t id)
/* Begin Public Class Implementation */
DSWaylandCompositor::DSWaylandCompositor(DSObject *parent)
- : DSObject(),
- DS_INIT_PRIVATE_PTR(DSWaylandCompositor)
+ : DS_INIT_PRIVATE_PTR(DSWaylandCompositor)
{
//TODO
}
return nullptr;
}
+void DSWaylandCompositor::registerCallbackSurfaceCreated(DSObject *slot, std::function<void(std::shared_ptr<DSWaylandSurface>)> func)
+{
+ this->__surfaceCreatedSignal.connect(slot, func);
+}
+
}
#include "DSCore.h"
#include "DSObject.h"
+#include "DSSignal.h"
struct wl_display;
class DSWaylandClient;
class DSWaylandSeat;
+class DSWaylandSurface;
class DSWaylandCompositorPrivate;
class DS_DECL_EXPORT DSWaylandCompositor : public DSObject
{
std::list<DSWaylandClient *> clients();
DSWaylandSeat *defaultSeat();
- //TODO
+ // Callback methods
+ void registerCallbackSurfaceCreated(DSObject *slot, std::function<void(std::shared_ptr<DSWaylandSurface>)> func);
protected:
//TODO
private:
- //TODO
+
+ // signals
+ DSSignal<std::shared_ptr<DSWaylandSurface>> __surfaceCreatedSignal;
};
}