Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ValveSoftware/vkd3d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/vkd3d-utils/vkd3d_utils_main.c108
-rw-r--r--libs/vkd3d-utils/vkd3d_utils_private.h12
-rw-r--r--libs/vkd3d/vkd3d_main.c107
-rw-r--r--libs/vkd3d/vkd3d_private.h7
4 files changed, 118 insertions, 116 deletions
diff --git a/libs/vkd3d-utils/vkd3d_utils_main.c b/libs/vkd3d-utils/vkd3d_utils_main.c
index e0b6c303..e7933633 100644
--- a/libs/vkd3d-utils/vkd3d_utils_main.c
+++ b/libs/vkd3d-utils/vkd3d_utils_main.c
@@ -45,3 +45,111 @@ HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter,
return vkd3d_create_device(&create_info, riid, device);
}
+
+/* Events */
+HANDLE WINAPI VKD3DCreateEvent(void)
+{
+ struct vkd3d_event *event;
+ int rc;
+
+ TRACE(".\n");
+
+ if (!(event = vkd3d_malloc(sizeof(*event))))
+ return NULL;
+
+ if ((rc = pthread_mutex_init(&event->mutex, NULL)))
+ {
+ ERR("Failed to initialize mutex, error %d.\n", rc);
+ vkd3d_free(event);
+ return NULL;
+ }
+ if ((rc = pthread_cond_init(&event->cond, NULL)))
+ {
+ ERR("Failed to initialize condition variable, error %d.\n", rc);
+ pthread_mutex_destroy(&event->mutex);
+ vkd3d_free(event);
+ return NULL;
+ }
+
+ event->is_signaled = FALSE;
+
+ TRACE("Created event %p.\n", event);
+
+ return event;
+}
+
+unsigned int WINAPI VKD3DWaitEvent(HANDLE event, unsigned int milliseconds)
+{
+ struct vkd3d_event *impl = event;
+ int rc;
+
+ TRACE("event %p, milliseconds %u.\n", event, milliseconds);
+
+ if ((rc = pthread_mutex_lock(&impl->mutex)))
+ {
+ ERR("Failed to lock mutex, error %d.\n", rc);
+ return WAIT_FAILED;
+ }
+
+ if (impl->is_signaled || !milliseconds)
+ {
+ BOOL is_signaled = impl->is_signaled;
+ impl->is_signaled = FALSE;
+ pthread_mutex_unlock(&impl->mutex);
+ return is_signaled ? WAIT_OBJECT_0 : WAIT_TIMEOUT;
+ }
+
+ if (milliseconds == INFINITE)
+ {
+ do
+ {
+ if ((rc = pthread_cond_wait(&impl->cond, &impl->mutex)))
+ {
+ ERR("Failed to wait on condition variable, error %d.\n", rc);
+ pthread_mutex_unlock(&impl->mutex);
+ return WAIT_FAILED;
+ }
+ } while (!impl->is_signaled);
+
+ impl->is_signaled = FALSE;
+ pthread_mutex_unlock(&impl->mutex);
+ return WAIT_OBJECT_0;
+ }
+
+ pthread_mutex_unlock(&impl->mutex);
+ FIXME("Timed wait not implemented yet.\n");
+ return WAIT_FAILED;
+}
+
+BOOL WINAPI VKD3DSignalEvent(HANDLE event)
+{
+ struct vkd3d_event *impl = event;
+ int rc;
+
+ TRACE("event %p.\n", event);
+
+ if ((rc = pthread_mutex_lock(&impl->mutex)))
+ {
+ ERR("Failed to lock mutex, error %d.\n", rc);
+ return FALSE;
+ }
+ impl->is_signaled = TRUE;
+ pthread_cond_signal(&impl->cond);
+ pthread_mutex_unlock(&impl->mutex);
+
+ return TRUE;
+}
+
+void WINAPI VKD3DDestroyEvent(HANDLE event)
+{
+ struct vkd3d_event *impl = event;
+ int rc;
+
+ TRACE("event %p.\n", event);
+
+ if ((rc = pthread_mutex_destroy(&impl->mutex)))
+ ERR("Failed to destroy mutex, error %d.\n", rc);
+ if ((rc = pthread_cond_destroy(&impl->cond)))
+ ERR("Failed to destroy condition variable, error %d.\n", rc);
+ vkd3d_free(impl);
+}
diff --git a/libs/vkd3d-utils/vkd3d_utils_private.h b/libs/vkd3d-utils/vkd3d_utils_private.h
index a6405760..f9f0db53 100644
--- a/libs/vkd3d-utils/vkd3d_utils_private.h
+++ b/libs/vkd3d-utils/vkd3d_utils_private.h
@@ -23,10 +23,18 @@
#ifndef __VKD3D_UTILS_PRIVATE_H
#define __VKD3D_UTILS_PRIVATE_H
+#include <pthread.h>
+
#define COBJMACROS
#define NONAMELESSUNION
-#include "vkd3d_debug.h"
-
+#include "vkd3d_memory.h"
#include "vkd3d.h"
+struct vkd3d_event
+{
+ pthread_mutex_t mutex;
+ pthread_cond_t cond;
+ BOOL is_signaled;
+};
+
#endif /* __VKD3D_UTILS_PRIVATE_H */
diff --git a/libs/vkd3d/vkd3d_main.c b/libs/vkd3d/vkd3d_main.c
index 5235a1fc..68d213d8 100644
--- a/libs/vkd3d/vkd3d_main.c
+++ b/libs/vkd3d/vkd3d_main.c
@@ -51,110 +51,3 @@ HRESULT WINAPI vkd3d_create_device(const struct vkd3d_device_create_info *create
riid, device);
}
-/* Events */
-HANDLE WINAPI VKD3DCreateEvent(void)
-{
- struct vkd3d_event *event;
- int rc;
-
- TRACE(".\n");
-
- if (!(event = vkd3d_malloc(sizeof(*event))))
- return NULL;
-
- if ((rc = pthread_mutex_init(&event->mutex, NULL)))
- {
- ERR("Failed to initialize mutex, error %d.\n", rc);
- vkd3d_free(event);
- return NULL;
- }
- if ((rc = pthread_cond_init(&event->cond, NULL)))
- {
- ERR("Failed to initialize condition variable, error %d.\n", rc);
- pthread_mutex_destroy(&event->mutex);
- vkd3d_free(event);
- return NULL;
- }
-
- event->is_signaled = FALSE;
-
- TRACE("Created event %p.\n", event);
-
- return event;
-}
-
-unsigned int WINAPI VKD3DWaitEvent(HANDLE event, unsigned int milliseconds)
-{
- struct vkd3d_event *impl = event;
- int rc;
-
- TRACE("event %p, milliseconds %u.\n", event, milliseconds);
-
- if ((rc = pthread_mutex_lock(&impl->mutex)))
- {
- ERR("Failed to lock mutex, error %d.\n", rc);
- return WAIT_FAILED;
- }
-
- if (impl->is_signaled || !milliseconds)
- {
- BOOL is_signaled = impl->is_signaled;
- impl->is_signaled = FALSE;
- pthread_mutex_unlock(&impl->mutex);
- return is_signaled ? WAIT_OBJECT_0 : WAIT_TIMEOUT;
- }
-
- if (milliseconds == INFINITE)
- {
- do
- {
- if ((rc = pthread_cond_wait(&impl->cond, &impl->mutex)))
- {
- ERR("Failed to wait on condition variable, error %d.\n", rc);
- pthread_mutex_unlock(&impl->mutex);
- return WAIT_FAILED;
- }
- } while (!impl->is_signaled);
-
- impl->is_signaled = FALSE;
- pthread_mutex_unlock(&impl->mutex);
- return WAIT_OBJECT_0;
- }
-
- pthread_mutex_unlock(&impl->mutex);
- FIXME("Timed wait not implemented yet.\n");
- return WAIT_FAILED;
-}
-
-BOOL WINAPI VKD3DSignalEvent(HANDLE event)
-{
- struct vkd3d_event *impl = event;
- int rc;
-
- TRACE("event %p.\n", event);
-
- if ((rc = pthread_mutex_lock(&impl->mutex)))
- {
- ERR("Failed to lock mutex, error %d.\n", rc);
- return FALSE;
- }
- impl->is_signaled = TRUE;
- pthread_cond_signal(&impl->cond);
- pthread_mutex_unlock(&impl->mutex);
-
- return TRUE;
-}
-
-void WINAPI VKD3DDestroyEvent(HANDLE event)
-{
- struct vkd3d_event *impl = event;
- int rc;
-
- TRACE("event %p.\n", event);
-
- if ((rc = pthread_mutex_destroy(&impl->mutex)))
- ERR("Failed to destroy mutex, error %d.\n", rc);
- if ((rc = pthread_cond_destroy(&impl->cond)))
- ERR("Failed to destroy condition variable, error %d.\n", rc);
- vkd3d_free(impl);
-}
diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h
index 2a57ec03..4ecb98b9 100644
--- a/libs/vkd3d/vkd3d_private.h
+++ b/libs/vkd3d/vkd3d_private.h
@@ -45,13 +45,6 @@ struct vkd3d_instance
struct vkd3d_vk_instance_procs vk_procs;
};
-struct vkd3d_event
-{
- pthread_mutex_t mutex;
- pthread_cond_t cond;
- BOOL is_signaled;
-};
-
struct vkd3d_waiting_event
{
UINT64 value;