bool PulseSink::on_shmdata_disconnect() { pmanage<MPtr(&PContainer::enable)>(devices_enum_id_); prune_tree(".shmdata.reader." + shmpath_); shm_sub_.reset(); On_scope_exit { gst_pipeline_ = std::make_unique<GstPipeliner>(nullptr, nullptr); }; return remake_elements(); }
bool GTKVideo::on_shmdata_disconnect() { prune_tree(".shmdata.reader." + shmpath_); shm_sub_.reset(); On_scope_exit{gst_pipeline_ = std2::make_unique<GstPipeliner>(nullptr, [this](GstMessage *msg){ return this->bus_sync(msg); });}; return remake_elements(); }
bool PulseSrc::stop() { shm_sub_.reset(nullptr); prune_tree(".shmdata.writer." + shmpath_); pmanage<MPtr(&PContainer::remove)>(volume_id_); volume_id_ = 0; pmanage<MPtr(&PContainer::remove)>(mute_id_); mute_id_ = 0; if (!remake_elements()) return false; volume_id_ = pmanage<MPtr(&PContainer::push)>( "volume", GPropToProp::to_prop(G_OBJECT(pulsesrc_.get_raw()), "volume")); mute_id_ = pmanage<MPtr(&PContainer::push)>( "mute", GPropToProp::to_prop(G_OBJECT(pulsesrc_.get_raw()), "mute")); gst_pipeline_ = std::make_unique<GstPipeliner>(nullptr, nullptr); return true; }