mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
vkd3d: Do not allow synchronization primitives to fail.
In practice they never fail. If they fail, it means that there is some underlying platform problem and there is little we can do anyway. Under pthreads function prototypes allow returning failure, but that's only used for "error checking" mutexes, which we don't use. On the other hand, error handling in vkd3d is rather inconsistent: sometimes the errors are ignored, sometimes logged, sometimes passed to the caller. It's hard to handle failures appropriately if you can't even keep your state consistent, so I think it's better to avoid trying, assume that synchronization primitives do not fail and at least have consistent logging if something goes wrong.
This commit is contained in:
committed by
Alexandre Julliard
parent
a66fe31fe5
commit
552926cfca
Notes:
Alexandre Julliard
2023-02-02 22:14:51 +01:00
Approved-by: Conor McCarthy (@cmccarthy) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/75
@@ -948,16 +948,11 @@ HRESULT vkd3d_get_private_data(struct vkd3d_private_store *store,
|
||||
const struct vkd3d_private_data *data;
|
||||
HRESULT hr = S_OK;
|
||||
unsigned int size;
|
||||
int rc;
|
||||
|
||||
if (!out_size)
|
||||
return E_INVALIDARG;
|
||||
|
||||
if ((rc = vkd3d_mutex_lock(&store->mutex)))
|
||||
{
|
||||
ERR("Failed to lock mutex, error %d.\n", rc);
|
||||
return hresult_from_errno(rc);
|
||||
}
|
||||
vkd3d_mutex_lock(&store->mutex);
|
||||
|
||||
if (!(data = vkd3d_private_store_get_private_data(store, tag)))
|
||||
{
|
||||
@@ -990,13 +985,8 @@ HRESULT vkd3d_set_private_data(struct vkd3d_private_store *store,
|
||||
const GUID *tag, unsigned int data_size, const void *data)
|
||||
{
|
||||
HRESULT hr;
|
||||
int rc;
|
||||
|
||||
if ((rc = vkd3d_mutex_lock(&store->mutex)))
|
||||
{
|
||||
ERR("Failed to lock mutex, error %d.\n", rc);
|
||||
return hresult_from_errno(rc);
|
||||
}
|
||||
vkd3d_mutex_lock(&store->mutex);
|
||||
|
||||
hr = vkd3d_private_store_set_private_data(store, tag, data, data_size, false);
|
||||
|
||||
@@ -1009,13 +999,8 @@ HRESULT vkd3d_set_private_data_interface(struct vkd3d_private_store *store,
|
||||
{
|
||||
const void *data = object ? object : (void *)&object;
|
||||
HRESULT hr;
|
||||
int rc;
|
||||
|
||||
if ((rc = vkd3d_mutex_lock(&store->mutex)))
|
||||
{
|
||||
ERR("Failed to lock mutex, error %d.\n", rc);
|
||||
return hresult_from_errno(rc);
|
||||
}
|
||||
vkd3d_mutex_lock(&store->mutex);
|
||||
|
||||
hr = vkd3d_private_store_set_private_data(store, tag, data, sizeof(object), !!object);
|
||||
|
||||
|
Reference in New Issue
Block a user