Might as well revert it completely.
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
#include <atomic>
|
|
||||||
|
|
||||||
#include <86box/plat.h>
|
#include <86box/plat.h>
|
||||||
|
|
||||||
@@ -78,25 +77,25 @@ thread_close_mutex(mutex_t *_mutex)
|
|||||||
event_t *
|
event_t *
|
||||||
thread_create_event()
|
thread_create_event()
|
||||||
{
|
{
|
||||||
auto event = new event_cpp11_t;
|
auto ev = new event_cpp11_t;
|
||||||
return event;
|
return ev;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
thread_wait_event(event_t *handle, int timeout)
|
thread_wait_event(event_t *handle, int timeout)
|
||||||
{
|
{
|
||||||
auto event = reinterpret_cast<event_cpp11_t*>(handle);
|
auto event = reinterpret_cast<event_cpp11_t*>(handle);
|
||||||
std::unique_lock<std::mutex> lock(event->mutex);
|
auto lock = std::unique_lock<std::mutex>(event->mutex);
|
||||||
|
|
||||||
if (timeout < 0) {
|
if (timeout < 0) {
|
||||||
event->cond.wait(lock, [event] { return (event->state == true); });
|
event->cond.wait(lock, [event] { return event->state; });
|
||||||
} else {
|
} else {
|
||||||
auto to = std::chrono::system_clock::now() + std::chrono::milliseconds(timeout);
|
auto to = std::chrono::system_clock::now() + std::chrono::milliseconds(timeout);
|
||||||
std::cv_status status;
|
std::cv_status status;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
status = event->cond.wait_until(lock, to);
|
status = event->cond.wait_until(lock, to);
|
||||||
} while ((status != std::cv_status::timeout) && (event->state == false));
|
} while ((status != std::cv_status::timeout) && !event->state);
|
||||||
|
|
||||||
if (status == std::cv_status::timeout) {
|
if (status == std::cv_status::timeout) {
|
||||||
return 1;
|
return 1;
|
||||||
@@ -109,9 +108,10 @@ void
|
|||||||
thread_set_event(event_t *handle)
|
thread_set_event(event_t *handle)
|
||||||
{
|
{
|
||||||
auto event = reinterpret_cast<event_cpp11_t*>(handle);
|
auto event = reinterpret_cast<event_cpp11_t*>(handle);
|
||||||
std::unique_lock<std::mutex> lock(event->mutex);
|
{
|
||||||
|
auto lock = std::unique_lock<std::mutex>(event->mutex);
|
||||||
event->state = true;
|
event->state = true;
|
||||||
|
}
|
||||||
event->cond.notify_all();
|
event->cond.notify_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,8 +119,7 @@ void
|
|||||||
thread_reset_event(event_t *handle)
|
thread_reset_event(event_t *handle)
|
||||||
{
|
{
|
||||||
auto event = reinterpret_cast<event_cpp11_t*>(handle);
|
auto event = reinterpret_cast<event_cpp11_t*>(handle);
|
||||||
std::unique_lock<std::mutex> lock(event->mutex);
|
auto lock = std::unique_lock<std::mutex>(event->mutex);
|
||||||
|
|
||||||
event->state = false;
|
event->state = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user