mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 23:05:04 +01:00
fix merge conflicts from master
This commit is contained in:
commit
ee1b49f87e
98 changed files with 20163 additions and 16410 deletions
|
|
@ -80,12 +80,34 @@ fake_thread_start (void* arg)
|
|||
void* (*thread_work)(void*) = ts->thread_work;
|
||||
void* thread_arg = ts->arg;
|
||||
|
||||
pthread_set_name (ts->name.c_str());
|
||||
|
||||
delete ts;
|
||||
/* name will be deleted by the default handler for GStaticPrivate, when the thread exits */
|
||||
|
||||
return thread_work (thread_arg);
|
||||
pthread_set_name (ts->name.c_str());
|
||||
|
||||
/* we don't need this object anymore */
|
||||
|
||||
delete ts;
|
||||
|
||||
/* actually run the thread's work function */
|
||||
|
||||
void* ret = thread_work (thread_arg);
|
||||
|
||||
/* cleanup */
|
||||
|
||||
pthread_mutex_lock (&thread_map_lock);
|
||||
|
||||
for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ++i) {
|
||||
if (pthread_equal ((*i), pthread_self())) {
|
||||
all_threads.erase (i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock (&thread_map_lock);
|
||||
|
||||
/* done */
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
|
|
@ -147,10 +169,17 @@ void
|
|||
pthread_cancel_all ()
|
||||
{
|
||||
pthread_mutex_lock (&thread_map_lock);
|
||||
for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ++i) {
|
||||
|
||||
for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ) {
|
||||
|
||||
ThreadMap::iterator nxt = i;
|
||||
++nxt;
|
||||
|
||||
if (!pthread_equal ((*i), pthread_self())) {
|
||||
pthread_cancel ((*i));
|
||||
}
|
||||
|
||||
i = nxt;
|
||||
}
|
||||
all_threads.clear();
|
||||
pthread_mutex_unlock (&thread_map_lock);
|
||||
|
|
@ -171,18 +200,3 @@ pthread_cancel_one (pthread_t thread)
|
|||
pthread_mutex_unlock (&thread_map_lock);
|
||||
}
|
||||
|
||||
void
|
||||
pthread_exit_pbd (void* status)
|
||||
{
|
||||
pthread_t thread = pthread_self();
|
||||
|
||||
pthread_mutex_lock (&thread_map_lock);
|
||||
for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ++i) {
|
||||
if (pthread_equal ((*i), thread)) {
|
||||
all_threads.erase (i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
pthread_mutex_unlock (&thread_map_lock);
|
||||
pthread_exit (status);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue