Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
VideoLAN
x264
Commits
23829dd2
Commit
23829dd2
authored
Nov 23, 2012
by
Anton Mitrofanov
Committed by
Fiona Glaser
Dec 12, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
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
Showing
5 changed files
with
10 additions
and
5 deletions
+10
-5
common/osdep.h
common/osdep.h
+1
-1
common/threadpool.c
common/threadpool.c
+2
-1
common/win32thread.c
common/win32thread.c
+4
-2
common/win32thread.h
common/win32thread.h
+1
-0
encoder/lookahead.c
encoder/lookahead.c
+2
-1
No files found.
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