Skip to content

Commit ff62efd

Browse files
committed
main,audio: utilize PTHREAD_NULL
to simplify (no need for separate bool) In main, there were additional conditions to join - perhaps unneeded (legacy?) -> removed. If it causes problems, it can be readded.
1 parent bf949d5 commit ff62efd

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

src/audio/audio.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
#include <sstream>
6060
#include <string>
6161

62+
#define WANT_PTHREAD_NULL
6263
#include "../export.h" // not audio/export.h
6364
#include "audio/audio.h"
6465
#include "audio/audio_capture.h"
@@ -72,6 +73,7 @@
7273
#include "audio/playback/sdi.h"
7374
#include "audio/resampler.hpp"
7475
#include "audio/utils.h"
76+
#include "compat/misc.h" // for PTHREAD_NULL
7577
#include "config.h" // for HAVE_SPEEXDSP
7678
#include "debug.h"
7779
#include "host.h"
@@ -165,11 +167,9 @@ struct state_audio {
165167

166168
struct tx *tx_session = nullptr;
167169
fec *fec_state = nullptr;
168-
169-
pthread_t audio_sender_thread_id{},
170-
audio_receiver_thread_id{};
171-
bool audio_sender_thread_started = false,
172-
audio_receiver_thread_started = false;
170+
171+
pthread_t audio_sender_thread_id = PTHREAD_NULL;
172+
pthread_t audio_receiver_thread_id = PTHREAD_NULL;
173173

174174
char *audio_channel_map = nullptr;
175175
const char *audio_scale = nullptr;
@@ -302,7 +302,6 @@ int audio_init(struct state_audio **ret,
302302
s->audio_channel_map = opt->channel_map;
303303
s->audio_scale = opt->scale;
304304

305-
s->audio_sender_thread_started = s->audio_receiver_thread_started = false;
306305
s->resample_to = parse_audio_codec_params(opt->codec_cfg).sample_rate;
307306

308307
s->exporter = common->exporter;
@@ -491,8 +490,6 @@ void audio_start(struct state_audio *s) {
491490
(&s->audio_sender_thread_id, NULL, audio_sender_thread, (void *)s) != 0) {
492491
log_msg(LOG_LEVEL_FATAL, "Error creating audio thread. Quitting\n");
493492
exit_uv(EXIT_FAIL_AUDIO);
494-
} else {
495-
s->audio_sender_thread_started = true;
496493
}
497494
}
498495

@@ -501,8 +498,6 @@ void audio_start(struct state_audio *s) {
501498
(&s->audio_receiver_thread_id, NULL, audio_receiver_thread, (void *)s) != 0) {
502499
log_msg(LOG_LEVEL_FATAL, "Error creating audio thread. Quitting\n");
503500
exit_uv(EXIT_FAIL_AUDIO);
504-
} else {
505-
s->audio_receiver_thread_started = true;
506501
}
507502
}
508503
}
@@ -511,10 +506,12 @@ void audio_join(struct state_audio *s) {
511506
if (!s) {
512507
return;
513508
}
514-
if(s->audio_receiver_thread_started)
509+
if (!pthread_equal(s->audio_receiver_thread_id, PTHREAD_NULL)) {
515510
pthread_join(s->audio_receiver_thread_id, NULL);
516-
if(s->audio_sender_thread_started)
511+
}
512+
if (!pthread_equal(s->audio_sender_thread_id, PTHREAD_NULL)) {
517513
pthread_join(s->audio_sender_thread_id, NULL);
514+
}
518515
}
519516

520517
void audio_done(struct state_audio *s)

src/main.cpp

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,14 @@
8585
#include <utility> // for move
8686
#include <vector> // for vector
8787

88+
#define WANT_PTHREAD_NULL
8889
#include "audio/audio.h" // for audio_options, additional_aud...
8990
#include "audio/audio_capture.h" // for audio_capture_get_vidcap_flags
9091
#include "audio/audio_playback.h" // for audio_playback_help
9192
#include "audio/codec.h" // for audio_codec_params, get_name_...
9293
#include "audio/types.h" // for AC_NONE, AUDIO_FRAME_DISPOSE
9394
#include "compat/alarm.h" // for alarm
95+
#include "compat/misc.h" // for PTHREAD_NULL
9496
#include "compat/strings.h" // for strcasecmp
9597
#include "control_socket.h"
9698
#include "cuda_wrapper.h"
@@ -1335,10 +1337,9 @@ int main(int argc, char *argv[])
13351337
#endif
13361338
ug_options opt{};
13371339

1338-
pthread_t receiver_thread_id,
1339-
capture_thread_id;
1340-
bool receiver_thread_started = false,
1341-
capture_thread_started = false;
1340+
pthread_t receiver_thread_id = PTHREAD_NULL;
1341+
pthread_t capture_thread_id = PTHREAD_NULL;
1342+
13421343
unsigned display_flags = 0;
13431344
struct control_state *control = NULL;
13441345
int ret;
@@ -1540,8 +1541,6 @@ int main(int argc, char *argv[])
15401541
perror("Unable to create display thread!\n");
15411542
exit_uv(EXIT_FAILURE);
15421543
goto cleanup;
1543-
} else {
1544-
receiver_thread_started = true;
15451544
}
15461545
}
15471546

@@ -1552,8 +1551,6 @@ int main(int argc, char *argv[])
15521551
perror("Unable to create capture thread!\n");
15531552
exit_uv(EXIT_FAILURE);
15541553
goto cleanup;
1555-
} else {
1556-
capture_thread_started = true;
15571554
}
15581555
}
15591556

@@ -1596,12 +1593,11 @@ int main(int argc, char *argv[])
15961593
}
15971594

15981595
cleanup:
1599-
if (strcmp("none", opt.requested_display) != 0 &&
1600-
receiver_thread_started)
1596+
if (!pthread_equal(receiver_thread_id, PTHREAD_NULL)) {
16011597
pthread_join(receiver_thread_id, NULL);
1598+
}
16021599

1603-
if ((opt.video_rxtx_mode & MODE_SENDER) != 0U
1604-
&& capture_thread_started) {
1600+
if (!pthread_equal(capture_thread_id, PTHREAD_NULL)) {
16051601
pthread_join(capture_thread_id, NULL);
16061602
}
16071603

0 commit comments

Comments
 (0)