Spinscale: create new namespace sscl
This commit is contained in:
@@ -71,7 +71,7 @@ bool IoUringAssemblyEngine::setup()
|
||||
{
|
||||
// Defensive check to prevent double-calling
|
||||
{
|
||||
SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
if (shouldAcceptRequests)
|
||||
{
|
||||
throw std::runtime_error(std::string(__func__) + ": setup() called "
|
||||
@@ -180,7 +180,7 @@ void IoUringAssemblyEngine::finalize()
|
||||
|
||||
{
|
||||
auto& ioService = smoHooksPtr->ComponentThread_getSelf()->getIoService();
|
||||
AsynchronousBridge bridge(ioService);
|
||||
sscl::AsynchronousBridge bridge(ioService);
|
||||
boost::asio::deadline_timer timeoutTimer(ioService);
|
||||
|
||||
/** EXPLANATION:
|
||||
@@ -329,7 +329,7 @@ void IoUringAssemblyEngine::resetAndAssembleFrame(
|
||||
bool IoUringAssemblyEngine::stop()
|
||||
{
|
||||
// Acquire and release lock tightly around setting the flag
|
||||
SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
bool wasAcceptingRequests = shouldAcceptRequests;
|
||||
shouldAcceptRequests = false;
|
||||
return wasAcceptingRequests;
|
||||
@@ -427,22 +427,22 @@ cleanup_eventfd:
|
||||
|
||||
// Continuation class for assembleFrameReq
|
||||
class IoUringAssemblyEngine::AssembleFrameReq
|
||||
: public PostedAsynchronousContinuation<
|
||||
: public sscl::PostedAsynchronousContinuation<
|
||||
IoUringAssemblyEngine::assembleFrameReqCbFn>
|
||||
{
|
||||
public:
|
||||
AssembleFrameReq(
|
||||
IoUringAssemblyEngine& engine_,
|
||||
const std::shared_ptr<ComponentThread>& caller,
|
||||
Callback<IoUringAssemblyEngine::assembleFrameReqCbFn> cb)
|
||||
: PostedAsynchronousContinuation<
|
||||
const std::shared_ptr<sscl::ComponentThread>& caller,
|
||||
sscl::Callback<IoUringAssemblyEngine::assembleFrameReqCbFn> cb)
|
||||
: sscl::PostedAsynchronousContinuation<
|
||||
IoUringAssemblyEngine::assembleFrameReqCbFn>(caller, cb),
|
||||
engine(engine_),
|
||||
loop(engine_.frameAssemblyDesc->numSlots),
|
||||
timerFired(false), handlerExecuted(false)
|
||||
{}
|
||||
|
||||
void callOriginalCallback(bool success, AsynchronousLoop loop)
|
||||
void callOriginalCallback(bool success, sscl::AsynchronousLoop loop)
|
||||
{
|
||||
callOriginalCb(success, loop);
|
||||
}
|
||||
@@ -451,16 +451,16 @@ public:
|
||||
void assembleFrameReq1_posted(
|
||||
std::shared_ptr<AssembleFrameReq> context)
|
||||
{
|
||||
SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
|
||||
if (!engine.shouldAcceptRequests)
|
||||
{
|
||||
context->callOriginalCallback(false, AsynchronousLoop(0));
|
||||
context->callOriginalCallback(false, sscl::AsynchronousLoop(0));
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize loop with number of slots
|
||||
context->loop = AsynchronousLoop(engine.frameAssemblyDesc->numSlots);
|
||||
context->loop = sscl::AsynchronousLoop(engine.frameAssemblyDesc->numSlots);
|
||||
|
||||
// Record assembly start time
|
||||
engine.assemblyStartTime = std::chrono::high_resolution_clock::now();
|
||||
@@ -505,7 +505,7 @@ public:
|
||||
* indeed seen a SEGFAULT even in the current code with locking, so
|
||||
* I'm going to hold the lock here for now.
|
||||
*/
|
||||
SpinLock::Guard lock(context->engine.shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(context->engine.shouldAcceptRequestsLock);
|
||||
|
||||
if (!context->engine.shouldAcceptRequests)
|
||||
{
|
||||
@@ -636,19 +636,19 @@ public:
|
||||
|
||||
public:
|
||||
IoUringAssemblyEngine& engine;
|
||||
AsynchronousLoop loop;
|
||||
sscl::AsynchronousLoop loop;
|
||||
std::atomic<bool> timerFired;
|
||||
std::atomic<bool> handlerExecuted;
|
||||
};
|
||||
|
||||
void IoUringAssemblyEngine::assembleFrameReq(
|
||||
Callback<assembleFrameReqCbFn> cb)
|
||||
sscl::Callback<assembleFrameReqCbFn> cb)
|
||||
{
|
||||
{
|
||||
SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
if (!shouldAcceptRequests)
|
||||
{
|
||||
cb.callbackFn(false, AsynchronousLoop(0));
|
||||
cb.callbackFn(false, sscl::AsynchronousLoop(0));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -677,7 +677,7 @@ void IoUringAssemblyEngine::onEventfdRead(
|
||||
* IoUringAssemblyEngine's per-assembly state isn't destroyed while this
|
||||
* handler is running.
|
||||
*/
|
||||
SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
/** EXPLANATION:
|
||||
* You'd think we should put check for shouldAcceptRequests here and
|
||||
* `return` here if !shouldAcceptRequests, but we shouldn't because
|
||||
@@ -763,7 +763,7 @@ void IoUringAssemblyEngine::fillUnAssembledSlotsWithDummyDgrams()
|
||||
}
|
||||
}
|
||||
|
||||
void IoUringAssemblyEngine::randomDummySlotFiller(AsynchronousLoop& loop)
|
||||
void IoUringAssemblyEngine::randomDummySlotFiller(sscl::AsynchronousLoop& loop)
|
||||
{
|
||||
if (!frameAssemblyDesc)
|
||||
{ return; }
|
||||
@@ -816,7 +816,7 @@ void IoUringAssemblyEngine::randomDummySlotFiller(AsynchronousLoop& loop)
|
||||
numDummiesToCreate = dummiesCreated;
|
||||
}
|
||||
|
||||
// Update the AsynchronousLoop to reflect the new number of dummies
|
||||
// Update the sscl::AsynchronousLoop to reflect the new number of dummies
|
||||
// Since we only reach here when nSucceeded == nTotal and nFailed == 0,
|
||||
// we can directly calculate the new values
|
||||
uint32_t newSucceeded = nTotal - static_cast<uint32_t>(numDummiesToCreate);
|
||||
|
||||
@@ -40,8 +40,8 @@ public:
|
||||
bool setup();
|
||||
void finalize();
|
||||
|
||||
typedef std::function<void(bool, AsynchronousLoop)> assembleFrameReqCbFn;
|
||||
void assembleFrameReq(Callback<assembleFrameReqCbFn> cb);
|
||||
typedef std::function<void(bool, sscl::AsynchronousLoop)> assembleFrameReqCbFn;
|
||||
void assembleFrameReq(sscl::Callback<assembleFrameReqCbFn> cb);
|
||||
|
||||
// Telemetry helpers
|
||||
static size_t computePointsPerFrame(int returnMode, size_t nDgramsPerFrame)
|
||||
@@ -82,7 +82,7 @@ private:
|
||||
* Flag to indicate whether engine should accept new requests.
|
||||
* Set by setup(), cleared by stop().
|
||||
*/
|
||||
SpinLock shouldAcceptRequestsLock;
|
||||
sscl::SpinLock shouldAcceptRequestsLock;
|
||||
bool shouldAcceptRequests;
|
||||
|
||||
size_t nDgramsPerStagingBufferFrame;
|
||||
@@ -106,7 +106,7 @@ private:
|
||||
std::chrono::high_resolution_clock::time_point assemblyEndTime;
|
||||
|
||||
void fillUnAssembledSlotsWithDummyDgrams();
|
||||
void randomDummySlotFiller(AsynchronousLoop& loop);
|
||||
void randomDummySlotFiller(sscl::AsynchronousLoop& loop);
|
||||
void onEventfdRead(
|
||||
const boost::system::error_code& error, std::size_t bytes_transferred);
|
||||
|
||||
|
||||
@@ -119,13 +119,13 @@ LivoxProto1DllState livoxProto1;
|
||||
|
||||
// Continuation classes for async operations
|
||||
class AttachDeviceReq
|
||||
: public smo::NonPostedAsynchronousContinuation<sal_mlo_attachDeviceReqCbFn>
|
||||
: public sscl::NonPostedAsynchronousContinuation<sal_mlo_attachDeviceReqCbFn>
|
||||
{
|
||||
public:
|
||||
AttachDeviceReq(
|
||||
const std::shared_ptr<smo::device::DeviceAttachmentSpec>& spec,
|
||||
smo::Callback<sal_mlo_attachDeviceReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<sal_mlo_attachDeviceReqCbFn>(
|
||||
sscl::Callback<sal_mlo_attachDeviceReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<sal_mlo_attachDeviceReqCbFn>(
|
||||
std::move(cb)),
|
||||
spec(spec)
|
||||
{}
|
||||
@@ -388,14 +388,14 @@ public:
|
||||
};
|
||||
|
||||
class DetachDeviceReq
|
||||
: public smo::NonPostedAsynchronousContinuation<sal_mlo_detachDeviceReqCbFn>
|
||||
: public sscl::NonPostedAsynchronousContinuation<sal_mlo_detachDeviceReqCbFn>
|
||||
{
|
||||
public:
|
||||
DetachDeviceReq(
|
||||
const std::shared_ptr<smo::device::DeviceAttachmentSpec>& spec,
|
||||
const std::shared_ptr<StimulusBuffer>& stimBuffer,
|
||||
smo::Callback<sal_mlo_detachDeviceReqCbFn> cb)
|
||||
: smo::NonPostedAsynchronousContinuation<sal_mlo_detachDeviceReqCbFn>(
|
||||
sscl::Callback<sal_mlo_detachDeviceReqCbFn> cb)
|
||||
: sscl::NonPostedAsynchronousContinuation<sal_mlo_detachDeviceReqCbFn>(
|
||||
std::move(cb)),
|
||||
spec(spec), stimBuffer(stimBuffer)
|
||||
{}
|
||||
@@ -658,8 +658,8 @@ extern "C" int livoxGen1_finalizeInd(void)
|
||||
|
||||
extern "C" void livoxGen1_attachDeviceReq(
|
||||
const std::shared_ptr<smo::device::DeviceAttachmentSpec>& desc,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
Callback<smo::stim_buff::sal_mlo_attachDeviceReqCbFn> cb
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
sscl::Callback<smo::stim_buff::sal_mlo_attachDeviceReqCbFn> cb
|
||||
)
|
||||
{
|
||||
if (!livoxProto1.livoxProto1_getOrCreateDeviceReq)
|
||||
@@ -847,7 +847,7 @@ extern "C" void livoxGen1_attachDeviceReq(
|
||||
|
||||
extern "C" void livoxGen1_detachDeviceReq(
|
||||
const std::shared_ptr<smo::device::DeviceAttachmentSpec>& desc,
|
||||
Callback<smo::stim_buff::sal_mlo_detachDeviceReqCbFn> cb
|
||||
sscl::Callback<smo::stim_buff::sal_mlo_detachDeviceReqCbFn> cb
|
||||
)
|
||||
{
|
||||
// Case 1: Check if StimBuffer doesn't exist (early return)
|
||||
|
||||
@@ -65,7 +65,7 @@ bool OpenClCollatingAndMeshingEngine::setup()
|
||||
{
|
||||
// Defensive check to prevent double-calling
|
||||
{
|
||||
SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
if (shouldAcceptRequests)
|
||||
{
|
||||
throw std::runtime_error(std::string(__func__) + ": setup() called "
|
||||
@@ -224,7 +224,7 @@ void OpenClCollatingAndMeshingEngine::finalize()
|
||||
int delayMs = std::max(OCLCOLLMESH_ENGN_FINALIZE_DELAY_MS, 0);
|
||||
|
||||
auto& ioService = smoHooksPtr->ComponentThread_getSelf()->getIoService();
|
||||
AsynchronousBridge bridge(ioService);
|
||||
sscl::AsynchronousBridge bridge(ioService);
|
||||
boost::asio::deadline_timer timeoutTimer(ioService);
|
||||
|
||||
/** EXPLANATION:
|
||||
@@ -763,7 +763,7 @@ bool OpenClCollatingAndMeshingEngine::setupCollateDgramsArgs(
|
||||
bool OpenClCollatingAndMeshingEngine::stop()
|
||||
{
|
||||
// Acquire and release lock tightly around setting the flag
|
||||
SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
bool wasAcceptingRequests = shouldAcceptRequests;
|
||||
shouldAcceptRequests = false;
|
||||
return wasAcceptingRequests;
|
||||
@@ -1015,11 +1015,11 @@ void OpenClCollatingAndMeshingEngine::produceAmbienceStimulusFrame(
|
||||
}
|
||||
|
||||
class OpenClCollatingAndMeshingEngine::CompactCollateAndMeshFrameReq
|
||||
: public PostedAsynchronousContinuation<compactCollateAndMeshFrameReqCbFn>
|
||||
: public sscl::PostedAsynchronousContinuation<compactCollateAndMeshFrameReqCbFn>
|
||||
{
|
||||
private:
|
||||
OpenClCollatingAndMeshingEngine& engine;
|
||||
AsynchronousLoop frameAssemblyResult;
|
||||
sscl::AsynchronousLoop frameAssemblyResult;
|
||||
StimulusFrame& stimulusFrame;
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> intensityStimFrame;
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame;
|
||||
@@ -1027,13 +1027,13 @@ private:
|
||||
public:
|
||||
CompactCollateAndMeshFrameReq(
|
||||
OpenClCollatingAndMeshingEngine& engine_,
|
||||
AsynchronousLoop& asyncLoop,
|
||||
sscl::AsynchronousLoop& asyncLoop,
|
||||
StimulusFrame& stimulusFrame_,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> intensityStimFrame_,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame_,
|
||||
const std::shared_ptr<ComponentThread>& caller,
|
||||
Callback<compactCollateAndMeshFrameReqCbFn> cb)
|
||||
: PostedAsynchronousContinuation<compactCollateAndMeshFrameReqCbFn>(
|
||||
const std::shared_ptr<sscl::ComponentThread>& caller,
|
||||
sscl::Callback<compactCollateAndMeshFrameReqCbFn> cb)
|
||||
: sscl::PostedAsynchronousContinuation<compactCollateAndMeshFrameReqCbFn>(
|
||||
caller, cb),
|
||||
engine(engine_),
|
||||
frameAssemblyResult(asyncLoop), stimulusFrame(stimulusFrame_),
|
||||
@@ -1049,7 +1049,7 @@ public:
|
||||
void compactCollateAndMeshFrameReq1_doCompact_posted(
|
||||
std::shared_ptr<CompactCollateAndMeshFrameReq> context)
|
||||
{
|
||||
SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
if (!engine.shouldAcceptRequests)
|
||||
{
|
||||
callOriginalCallback(false);
|
||||
@@ -1080,7 +1080,7 @@ public:
|
||||
std::shared_ptr<CompactCollateAndMeshFrameReq> context,
|
||||
cl_int compactStatus)
|
||||
{
|
||||
SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
if (!engine.shouldAcceptRequests)
|
||||
{
|
||||
/** EXPLANATION:
|
||||
@@ -1121,7 +1121,7 @@ public:
|
||||
void compactCollateAndMeshFrameReq3_doCollate_posted(
|
||||
std::shared_ptr<CompactCollateAndMeshFrameReq> context)
|
||||
{
|
||||
SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
if (!engine.shouldAcceptRequests)
|
||||
{
|
||||
callOriginalCallback(false);
|
||||
@@ -1153,7 +1153,7 @@ public:
|
||||
[[maybe_unused]] std::shared_ptr<CompactCollateAndMeshFrameReq> context,
|
||||
cl_int collateStatus)
|
||||
{
|
||||
SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(engine.shouldAcceptRequestsLock);
|
||||
if (!engine.shouldAcceptRequests)
|
||||
{
|
||||
/* We intentionally don't call collateKernelComplete() here for the
|
||||
@@ -1273,13 +1273,13 @@ public:
|
||||
};
|
||||
|
||||
void OpenClCollatingAndMeshingEngine::compactCollateAndMeshFrameReq(
|
||||
AsynchronousLoop& asyncLoop, StimulusFrame& stimulusFrame,
|
||||
sscl::AsynchronousLoop& asyncLoop, StimulusFrame& stimulusFrame,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> intensityStimFrame,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame,
|
||||
Callback<compactCollateAndMeshFrameReqCbFn> callback)
|
||||
sscl::Callback<compactCollateAndMeshFrameReqCbFn> callback)
|
||||
{
|
||||
{
|
||||
SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
sscl::SpinLock::Guard lock(shouldAcceptRequestsLock);
|
||||
if (!shouldAcceptRequests)
|
||||
{
|
||||
callback.callbackFn(false, stimulusFrame);
|
||||
|
||||
@@ -78,10 +78,10 @@ public:
|
||||
typedef std::function<void(bool, StimulusFrame&)>
|
||||
compactCollateAndMeshFrameReqCbFn;
|
||||
void compactCollateAndMeshFrameReq(
|
||||
AsynchronousLoop& asyncLoop, StimulusFrame& stimulusFrame,
|
||||
sscl::AsynchronousLoop& asyncLoop, StimulusFrame& stimulusFrame,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> intensityStimFrame,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame,
|
||||
Callback<compactCollateAndMeshFrameReqCbFn> callback);
|
||||
sscl::Callback<compactCollateAndMeshFrameReqCbFn> callback);
|
||||
|
||||
private:
|
||||
// Callback function types
|
||||
@@ -133,7 +133,7 @@ private:
|
||||
cl_mem clAverageIntensityBuffer;
|
||||
|
||||
// State tracking
|
||||
SpinLock shouldAcceptRequestsLock;
|
||||
sscl::SpinLock shouldAcceptRequestsLock;
|
||||
bool shouldAcceptRequests;
|
||||
bool compactIsRunning;
|
||||
bool collateIsRunning;
|
||||
|
||||
@@ -362,11 +362,11 @@ void PcloudStimulusProducer::stimFrameProductionTimesliceInd()
|
||||
}
|
||||
|
||||
class PcloudStimulusProducer::ProduceFrameReq
|
||||
: public PostedAsynchronousContinuation<produceFrameReqCbFn>
|
||||
: public sscl::PostedAsynchronousContinuation<produceFrameReqCbFn>
|
||||
{
|
||||
private:
|
||||
PcloudStimulusProducer& pcloudProducer;
|
||||
AsynchronousLoop frameAssemblyResult;
|
||||
sscl::AsynchronousLoop frameAssemblyResult;
|
||||
StimulusFrame& stimulusFrame;
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> intensityStimFrame;
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame;
|
||||
@@ -374,9 +374,9 @@ private:
|
||||
public:
|
||||
ProduceFrameReq(
|
||||
PcloudStimulusProducer& producer,
|
||||
const std::shared_ptr<ComponentThread>& caller,
|
||||
Callback<produceFrameReqCbFn> cb)
|
||||
: PostedAsynchronousContinuation<produceFrameReqCbFn>(caller, cb),
|
||||
const std::shared_ptr<sscl::ComponentThread>& caller,
|
||||
sscl::Callback<produceFrameReqCbFn> cb)
|
||||
: sscl::PostedAsynchronousContinuation<produceFrameReqCbFn>(caller, cb),
|
||||
pcloudProducer(producer),
|
||||
frameAssemblyResult(0),
|
||||
stimulusFrame(producer.tempStimulusFrame)
|
||||
@@ -393,7 +393,7 @@ public:
|
||||
void produceFrameReq1_doAssemble_posted(
|
||||
std::shared_ptr<ProduceFrameReq> context)
|
||||
{
|
||||
SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
sscl::SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
if (!pcloudProducer.shouldContinue)
|
||||
{
|
||||
callOriginalCallback();
|
||||
@@ -409,9 +409,9 @@ public:
|
||||
|
||||
void produceFrameReq2_assembleDone(
|
||||
std::shared_ptr<ProduceFrameReq> context,
|
||||
bool success, AsynchronousLoop loop)
|
||||
bool success, sscl::AsynchronousLoop loop)
|
||||
{
|
||||
SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
sscl::SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
if (!pcloudProducer.shouldContinue)
|
||||
{
|
||||
callOriginalCallback();
|
||||
@@ -490,7 +490,7 @@ public:
|
||||
context->ambienceStimFrame->get().lock.writeRelease();
|
||||
}
|
||||
|
||||
SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
sscl::SpinLock::Guard lock(pcloudProducer.shouldContinueLock);
|
||||
if (!pcloudProducer.shouldContinue)
|
||||
{
|
||||
callOriginalCallback();
|
||||
@@ -517,7 +517,7 @@ public:
|
||||
};
|
||||
|
||||
void PcloudStimulusProducer::produceFrameReq(
|
||||
smo::Callback<produceFrameReqCbFn> callback)
|
||||
sscl::Callback<produceFrameReqCbFn> callback)
|
||||
{
|
||||
/** EXPLANATION:
|
||||
* We shouldn't acquire the StimulusProducer::shouldContinueLock here because
|
||||
|
||||
@@ -80,7 +80,7 @@ protected:
|
||||
typedef std::function<void()> produceFrameReqCbFn;
|
||||
|
||||
public:
|
||||
void produceFrameReq(smo::Callback<produceFrameReqCbFn> callback);
|
||||
void produceFrameReq(sscl::Callback<produceFrameReqCbFn> callback);
|
||||
|
||||
size_t nDgramsPerStagingBufferFrame;
|
||||
std::shared_ptr<livoxProto1::Device> device;
|
||||
|
||||
@@ -276,8 +276,8 @@ static int xcbWindow_finalizeInd(void)
|
||||
|
||||
static void xcbWindow_attachDeviceReq(
|
||||
const std::shared_ptr<smo::device::DeviceAttachmentSpec>& desc,
|
||||
const std::shared_ptr<smo::ComponentThread>& componentThread,
|
||||
smo::Callback<smo::stim_buff::sal_mlo_attachDeviceReqCbFn> cb
|
||||
const std::shared_ptr<sscl::ComponentThread>& componentThread,
|
||||
sscl::Callback<smo::stim_buff::sal_mlo_attachDeviceReqCbFn> cb
|
||||
)
|
||||
{
|
||||
// Not used yet, but may be used later.
|
||||
@@ -302,7 +302,7 @@ static void xcbWindow_attachDeviceReq(
|
||||
|
||||
static void xcbWindow_detachDeviceReq(
|
||||
const std::shared_ptr<smo::device::DeviceAttachmentSpec>& spec,
|
||||
smo::Callback<smo::stim_buff::sal_mlo_detachDeviceReqCbFn> cb
|
||||
sscl::Callback<smo::stim_buff::sal_mlo_detachDeviceReqCbFn> cb
|
||||
)
|
||||
{
|
||||
auto it = std::find_if(g_attachedWindows.begin(), g_attachedWindows.end(),
|
||||
|
||||
Reference in New Issue
Block a user