latest SDK
This commit is contained in:
42
foobar2000/SDK/abort_callback.cpp
Normal file
42
foobar2000/SDK/abort_callback.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#include "foobar2000.h"
|
||||
|
||||
void abort_callback::check() const {
|
||||
if (is_aborting()) throw exception_aborted();
|
||||
}
|
||||
|
||||
void abort_callback::sleep(double p_timeout_seconds) const {
|
||||
if (!sleep_ex(p_timeout_seconds)) throw exception_aborted();
|
||||
}
|
||||
|
||||
bool abort_callback::sleep_ex(double p_timeout_seconds) const {
|
||||
// return true IF NOT SET (timeout), false if set
|
||||
return !pfc::event::g_wait_for(get_abort_event(),p_timeout_seconds);
|
||||
}
|
||||
|
||||
bool abort_callback::waitForEvent( pfc::eventHandle_t evtHandle, double timeOut ) {
|
||||
int status = pfc::event::g_twoEventWait( this->get_abort_event(), evtHandle, timeOut );
|
||||
switch(status) {
|
||||
case 1: throw exception_aborted();
|
||||
case 2: return true;
|
||||
case 0: return false;
|
||||
default: uBugCheck();
|
||||
}
|
||||
}
|
||||
|
||||
bool abort_callback::waitForEvent(pfc::event& evt, double timeOut) {
|
||||
return waitForEvent(evt.get_handle(), timeOut);
|
||||
}
|
||||
|
||||
void abort_callback::waitForEvent(pfc::eventHandle_t evtHandle) {
|
||||
bool status = waitForEvent(evtHandle, -1); (void)status;
|
||||
PFC_ASSERT(status); // should never return false
|
||||
}
|
||||
|
||||
void abort_callback::waitForEvent(pfc::event& evt) {
|
||||
bool status = waitForEvent(evt, -1); (void)status;
|
||||
PFC_ASSERT(status); // should never return false
|
||||
}
|
||||
|
||||
namespace fb2k {
|
||||
abort_callback_dummy noAbort;
|
||||
}
|
||||
Reference in New Issue
Block a user