Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
VideoLAN
x264
Commits
23829dd2
Commit
23829dd2
authored
Nov 23, 2012
by
Anton Mitrofanov
Committed by
Fiona Glaser
Dec 12, 2012
Browse files
Fix pthread_join emulation on win32 and BeOS
Doesn't actually affect x264, but it's more correct.
parent
042fdd3e
Changes
5
Hide whitespace changes
Inline
Side-by-side
common/osdep.h
View file @
23829dd2
...
...
@@ -149,7 +149,7 @@ static inline int x264_pthread_create( x264_pthread_t *t, void *a, void *(*f)(vo
return
0
;
}
#define x264_pthread_join(t,s) { long tmp; \
wait_for_thread(t,(s)?(long*)(
*(s)
):&tmp); }
wait_for_thread(t,(s)?(long*)(
s
):&tmp); }
#elif HAVE_POSIXTHREAD
#include <pthread.h>
...
...
common/threadpool.c
View file @
23829dd2
...
...
@@ -47,7 +47,7 @@ struct x264_threadpool_t
x264_sync_frame_list_t
done
;
/* list of jobs that have finished processing */
};
static
void
x264_threadpool_thread
(
x264_threadpool_t
*
pool
)
static
void
*
x264_threadpool_thread
(
x264_threadpool_t
*
pool
)
{
if
(
pool
->
init_func
)
pool
->
init_func
(
pool
->
init_arg
);
...
...
@@ -69,6 +69,7 @@ static void x264_threadpool_thread( x264_threadpool_t *pool )
job
->
ret
=
(
void
*
)
x264_stack_align
(
job
->
func
,
job
->
arg
);
/* execute the function */
x264_sync_frame_list_push
(
&
pool
->
done
,
(
void
*
)
job
);
}
return
NULL
;
}
int
x264_threadpool_init
(
x264_threadpool_t
**
p_pool
,
int
threads
,
...
...
common/win32thread.c
View file @
23829dd2
...
...
@@ -62,7 +62,7 @@ static x264_win32thread_control_t thread_control;
static
unsigned
__stdcall
x264_win32thread_worker
(
void
*
arg
)
{
x264_pthread_t
*
h
=
arg
;
h
->
ret
=
h
->
func
(
h
->
arg
);
*
h
->
p_
ret
=
h
->
func
(
h
->
arg
);
return
0
;
}
...
...
@@ -71,6 +71,8 @@ int x264_pthread_create( x264_pthread_t *thread, const x264_pthread_attr_t *attr
{
thread
->
func
=
start_routine
;
thread
->
arg
=
arg
;
thread
->
p_ret
=
&
thread
->
ret
;
thread
->
ret
=
NULL
;
thread
->
handle
=
(
void
*
)
_beginthreadex
(
NULL
,
0
,
x264_win32thread_worker
,
thread
,
0
,
NULL
);
return
!
thread
->
handle
;
}
...
...
@@ -81,7 +83,7 @@ int x264_pthread_join( x264_pthread_t thread, void **value_ptr )
if
(
ret
!=
WAIT_OBJECT_0
)
return
-
1
;
if
(
value_ptr
)
*
value_ptr
=
thread
.
ret
;
*
value_ptr
=
*
thread
.
p_
ret
;
CloseHandle
(
thread
.
handle
);
return
0
;
}
...
...
common/win32thread.h
View file @
23829dd2
...
...
@@ -36,6 +36,7 @@ typedef struct
void
*
handle
;
void
*
(
*
func
)(
void
*
arg
);
void
*
arg
;
void
**
p_ret
;
void
*
ret
;
}
x264_pthread_t
;
#define x264_pthread_attr_t int
...
...
encoder/lookahead.c
View file @
23829dd2
...
...
@@ -86,7 +86,7 @@ static void x264_lookahead_slicetype_decide( x264_t *h )
x264_pthread_mutex_unlock
(
&
h
->
lookahead
->
ofbuf
.
mutex
);
}
static
void
x264_lookahead_thread
(
x264_t
*
h
)
static
void
*
x264_lookahead_thread
(
x264_t
*
h
)
{
int
shift
;
#if HAVE_MMX
...
...
@@ -123,6 +123,7 @@ static void x264_lookahead_thread( x264_t *h )
h
->
lookahead
->
b_thread_active
=
0
;
x264_pthread_cond_broadcast
(
&
h
->
lookahead
->
ofbuf
.
cv_fill
);
x264_pthread_mutex_unlock
(
&
h
->
lookahead
->
ofbuf
.
mutex
);
return
NULL
;
}
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment