Skip to content

Commit 4c0010e

Browse files
committed
Run updateDiscordPresence in a new thread
1 parent 4ba6255 commit 4c0010e

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

discord_presence.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,11 @@ nowplaying_length () {
8686
#define STATUS_SONGCHANGED 2
8787
#define STATUS_SEEKED 3
8888

89+
int playback_status;
90+
float song_len;
91+
8992
static void
90-
updateDiscordPresence (int playback_status, float song_len) {
93+
updateDiscordPresence (void *_) {
9194
trace("updateDiscordPresence\n");
9295
// Arguments:
9396
// playback_status: as above
@@ -250,6 +253,13 @@ updateDiscordPresence (int playback_status, float song_len) {
250253
deadbeef->pl_item_unref(nowplaying);
251254
}
252255

256+
void
257+
create_update_thread (int ps, float slen) {
258+
playback_status = ps;
259+
song_len = slen;
260+
deadbeef->thread_start(updateDiscordPresence, NULL);
261+
}
262+
253263
static int
254264
discord_presence_message (uint32_t id, uintptr_t ctx, uint32_t p1, uint32_t p2) {
255265
switch (id) {
@@ -276,7 +286,7 @@ discord_presence_message (uint32_t id, uintptr_t ctx, uint32_t p1, uint32_t p2)
276286
// this has been fixed in commit d63a53bf70f09bc8534f6394580221c0af1babeb (2018-05-23)
277287
//if ( ((ddb_event_trackchange_t *)ctx)->to != ((ddb_event_trackchange_t *)ctx)->from) {
278288
float nextitem_length = deadbeef->pl_get_item_duration(((ddb_event_trackchange_t *)ctx)->to);
279-
updateDiscordPresence(STATUS_SONGCHANGED, nextitem_length);
289+
create_update_thread(STATUS_SONGCHANGED, nextitem_length);
280290
//}
281291
}
282292
else {
@@ -287,7 +297,7 @@ discord_presence_message (uint32_t id, uintptr_t ctx, uint32_t p1, uint32_t p2)
287297
break;
288298
case DB_EV_SEEKED:
289299
if (discord_enabled) {
290-
updateDiscordPresence(STATUS_SEEKED, 0);
300+
create_update_thread(STATUS_SEEKED, 0);
291301
}
292302
break;
293303
case DB_EV_PAUSED:
@@ -296,7 +306,7 @@ discord_presence_message (uint32_t id, uintptr_t ctx, uint32_t p1, uint32_t p2)
296306
Discord_ClearPresence();
297307
}
298308
else {
299-
updateDiscordPresence(p1, 0);
309+
create_update_thread(p1, 0);
300310
}
301311
}
302312
break;

0 commit comments

Comments
 (0)