mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
pthread: track thread existence in a separate variable.
This fixes a compile error on mingw32 when using p->thread directly (as if it were a pointer) to track thread existence, because the type is opaque and may be a non-pointer. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
This commit is contained in:
parent
7c5ce99bd9
commit
3f5aa7dfa6
@ -70,6 +70,7 @@ typedef struct PerThreadContext {
|
||||
struct FrameThreadContext *parent;
|
||||
|
||||
pthread_t thread;
|
||||
int thread_init;
|
||||
pthread_cond_t input_cond; ///< Used to wait for a new packet from the main thread.
|
||||
pthread_cond_t progress_cond; ///< Used by child threads to wait for progress to change.
|
||||
pthread_cond_t output_cond; ///< Used by the main thread to wait for frames to finish.
|
||||
@ -651,7 +652,7 @@ static void frame_thread_free(AVCodecContext *avctx, int thread_count)
|
||||
pthread_cond_signal(&p->input_cond);
|
||||
pthread_mutex_unlock(&p->mutex);
|
||||
|
||||
if (p->thread)
|
||||
if (p->thread_init)
|
||||
pthread_join(p->thread, NULL);
|
||||
|
||||
if (codec->close)
|
||||
@ -756,7 +757,8 @@ static int frame_thread_init(AVCodecContext *avctx)
|
||||
|
||||
if (err) goto error;
|
||||
|
||||
pthread_create(&p->thread, NULL, frame_worker_thread, p);
|
||||
if (!pthread_create(&p->thread, NULL, frame_worker_thread, p))
|
||||
p->thread_init = 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user