40 const std::shared_ptr<Core::Window>& window)
51 std::shared_ptr<Core::Window> window;
52 uint32_t observer_id { 0 };
56 if (svc && observer_id) {
58 std::static_pointer_cast<void>(window), observer_id);
63 auto state = std::make_shared<State>();
65 state->window = window;
67 state->observer_id = svc->register_frame_observer(
68 std::static_pointer_cast<void>(window),
70 [weak = std::weak_ptr<State>(state)](
71 const std::shared_ptr<std::vector<uint8_t>>& buf,
72 uint32_t w, uint32_t
h, uint32_t fmt) {
77 if (
auto s = weak.lock())
78 s->source.signal({ .data = buf, .width = w, .height = h, .format = fmt });
81 if (!state->observer_id)
84 return { state, &state->source };