mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
libs/gst/check: Make writing threadsafe. Backported from libcheck trunk
This commit is contained in:
parent
bf3ab71a2b
commit
53209f0220
1 changed files with 15 additions and 1 deletions
|
@ -36,6 +36,14 @@
|
||||||
#include "check_impl.h"
|
#include "check_impl.h"
|
||||||
#include "check_pack.h"
|
#include "check_pack.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_PTHREAD_H
|
||||||
|
#include <pthread.h>
|
||||||
|
pthread_mutex_t lock_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
#else
|
||||||
|
#define pthread_mutex_lock(arg)
|
||||||
|
#define pthread_mutex_unlock(arg)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* typedef an unsigned int that has at least 4 bytes */
|
/* typedef an unsigned int that has at least 4 bytes */
|
||||||
typedef uint32_t ck_uint32;
|
typedef uint32_t ck_uint32;
|
||||||
|
|
||||||
|
@ -260,9 +268,13 @@ static void
|
||||||
check_type (int type, const char *file, int line)
|
check_type (int type, const char *file, int line)
|
||||||
{
|
{
|
||||||
if (type < 0 || type >= CK_MSG_LAST)
|
if (type < 0 || type >= CK_MSG_LAST)
|
||||||
eprintf ("Bad message type arg", file, line);
|
eprintf ("Bad message type arg %d", file, line, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_PTHREAD_H
|
||||||
|
pthread_mutex_t mutex_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
ppack (int fdes, enum ck_msg_type type, CheckMsg * msg)
|
ppack (int fdes, enum ck_msg_type type, CheckMsg * msg)
|
||||||
{
|
{
|
||||||
|
@ -271,7 +283,9 @@ ppack (int fdes, enum ck_msg_type type, CheckMsg * msg)
|
||||||
ssize_t r;
|
ssize_t r;
|
||||||
|
|
||||||
n = pack (type, &buf, msg);
|
n = pack (type, &buf, msg);
|
||||||
|
pthread_mutex_lock (&mutex_lock);
|
||||||
r = write (fdes, buf, n);
|
r = write (fdes, buf, n);
|
||||||
|
pthread_mutex_unlock (&mutex_lock);
|
||||||
if (r == -1)
|
if (r == -1)
|
||||||
eprintf ("Error in call to write:", __FILE__, __LINE__ - 2);
|
eprintf ("Error in call to write:", __FILE__, __LINE__ - 2);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue