diff --git a/clients/audio/tests/fake_audio_device.h b/clients/audio/tests/fake_audio_device.h index 26264e2..2685838 100644 --- a/clients/audio/tests/fake_audio_device.h +++ b/clients/audio/tests/fake_audio_device.h @@ -149,30 +149,32 @@ private: pw_proxy *m_proxy = nullptr; pw_core *m_core = nullptr; - inline static const spa_device_methods methods = [] { - spa_device_methods methods {}; - methods.version = SPA_VERSION_DEVICE_METHODS; - methods.add_listener = [](void *object, spa_hook *listener, const spa_device_events *events, void *data) { - auto *self = static_cast(object); - spa_hook_list_append(&self->m_hooks, listener, events, data); - const spa_device_info info {SPA_VERSION_DEVICE_INFO, SPA_DEVICE_CHANGE_MASK_PARAMS, - 0, nullptr, self->m_params, 4}; - if (events->info) - events->info(data, &info); - return 0; - }; - methods.sync = [](void *object, int seq) { - auto *self = static_cast(object); - spa_device_emit_result(&self->m_hooks, seq, 0, 0, nullptr); - return 0; - }; - methods.enum_params = [](void *object, int seq, uint32_t id, uint32_t start, uint32_t count, const spa_pod *) { - return static_cast(object)->enumerate(seq, id, start, count); - }; - methods.set_param = [](void *object, uint32_t id, uint32_t, const spa_pod *param) { - return static_cast(object)->setParam(id, param); - }; - return methods; - }(); + static const spa_device_methods methods; }; + +inline const spa_device_methods FakeAudioDevice::methods = [] { + spa_device_methods methods {}; + methods.version = SPA_VERSION_DEVICE_METHODS; + methods.add_listener = [](void *object, spa_hook *listener, const spa_device_events *events, void *data) { + auto *self = static_cast(object); + spa_hook_list_append(&self->m_hooks, listener, events, data); + const spa_device_info info {SPA_VERSION_DEVICE_INFO, SPA_DEVICE_CHANGE_MASK_PARAMS, + 0, nullptr, self->m_params, 4}; + if (events->info) + events->info(data, &info); + return 0; + }; + methods.sync = [](void *object, int seq) { + auto *self = static_cast(object); + spa_device_emit_result(&self->m_hooks, seq, 0, 0, nullptr); + return 0; + }; + methods.enum_params = [](void *object, int seq, uint32_t id, uint32_t start, uint32_t count, const spa_pod *) { + return static_cast(object)->enumerate(seq, id, start, count); + }; + methods.set_param = [](void *object, uint32_t id, uint32_t, const spa_pod *param) { + return static_cast(object)->setParam(id, param); + }; + return methods; +}(); diff --git a/clients/audio/tests/test_stream.h b/clients/audio/tests/test_stream.h index 3415234..3770673 100644 --- a/clients/audio/tests/test_stream.h +++ b/clients/audio/tests/test_stream.h @@ -64,32 +64,34 @@ private: bool m_capture; float m_level; - inline static const pw_stream_events events = [] { - pw_stream_events events {}; - events.version = PW_VERSION_STREAM_EVENTS; - events.state_changed = [](void *data, pw_stream_state, pw_stream_state state, const char *) { - static_cast(data)->streaming = state == PW_STREAM_STATE_STREAMING; - }; - events.process = [](void *data) { - auto *self = static_cast(data); - pw_buffer *buffer = pw_stream_dequeue_buffer(self->m_stream); - if (!buffer) - return; - if (!self->m_capture && buffer->buffer->n_datas > 0) { - spa_data &data = buffer->buffer->datas[0]; - if (data.data && data.chunk) { - constexpr uint32_t stride = 2 * sizeof(float); - const uint32_t frames = buffer->requested - ? std::min(buffer->requested, data.maxsize / stride) : data.maxsize / stride; - std::fill_n(static_cast(data.data), frames * 2, self->m_level); - data.chunk->offset = 0; - data.chunk->size = frames * stride; - data.chunk->stride = stride; - buffer->size = frames; - } - } - pw_stream_queue_buffer(self->m_stream, buffer); - }; - return events; - }(); + static const pw_stream_events events; }; + +inline const pw_stream_events TestStream::events = [] { + pw_stream_events events {}; + events.version = PW_VERSION_STREAM_EVENTS; + events.state_changed = [](void *data, pw_stream_state, pw_stream_state state, const char *) { + static_cast(data)->streaming = state == PW_STREAM_STATE_STREAMING; + }; + events.process = [](void *data) { + auto *self = static_cast(data); + pw_buffer *buffer = pw_stream_dequeue_buffer(self->m_stream); + if (!buffer) + return; + if (!self->m_capture && buffer->buffer->n_datas > 0) { + spa_data &data = buffer->buffer->datas[0]; + if (data.data && data.chunk) { + constexpr uint32_t stride = 2 * sizeof(float); + const uint32_t frames = buffer->requested + ? std::min(buffer->requested, data.maxsize / stride) : data.maxsize / stride; + std::fill_n(static_cast(data.data), frames * 2, self->m_level); + data.chunk->offset = 0; + data.chunk->size = frames * stride; + data.chunk->stride = stride; + buffer->size = frames; + } + } + pw_stream_queue_buffer(self->m_stream, buffer); + }; + return events; +}();