PlayerControl: switch to the Mutex/Cond classes
This commit is contained in:
parent
0b93445380
commit
06e0741a52
@ -37,8 +37,6 @@ player_control::player_control(unsigned _buffer_chunks,
|
|||||||
:buffer_chunks(_buffer_chunks),
|
:buffer_chunks(_buffer_chunks),
|
||||||
buffered_before_play(_buffered_before_play),
|
buffered_before_play(_buffered_before_play),
|
||||||
thread(nullptr),
|
thread(nullptr),
|
||||||
mutex(g_mutex_new()),
|
|
||||||
cond(g_cond_new()),
|
|
||||||
command(PLAYER_COMMAND_NONE),
|
command(PLAYER_COMMAND_NONE),
|
||||||
state(PLAYER_STATE_STOP),
|
state(PLAYER_STATE_STOP),
|
||||||
error_type(PLAYER_ERROR_NONE),
|
error_type(PLAYER_ERROR_NONE),
|
||||||
@ -55,9 +53,6 @@ player_control::~player_control()
|
|||||||
{
|
{
|
||||||
if (next_song != nullptr)
|
if (next_song != nullptr)
|
||||||
song_free(next_song);
|
song_free(next_song);
|
||||||
|
|
||||||
g_cond_free(cond);
|
|
||||||
g_mutex_free(mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -76,7 +71,7 @@ static void
|
|||||||
player_command_wait_locked(struct player_control *pc)
|
player_command_wait_locked(struct player_control *pc)
|
||||||
{
|
{
|
||||||
while (pc->command != PLAYER_COMMAND_NONE)
|
while (pc->command != PLAYER_COMMAND_NONE)
|
||||||
g_cond_wait(pc->cond, pc->mutex);
|
pc->cond.wait(pc->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -21,6 +21,8 @@
|
|||||||
#define MPD_PLAYER_H
|
#define MPD_PLAYER_H
|
||||||
|
|
||||||
#include "audio_format.h"
|
#include "audio_format.h"
|
||||||
|
#include "thread/Mutex.hxx"
|
||||||
|
#include "thread/Cond.hxx"
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
@ -99,12 +101,12 @@ struct player_control {
|
|||||||
/**
|
/**
|
||||||
* This lock protects #command, #state, #error.
|
* This lock protects #command, #state, #error.
|
||||||
*/
|
*/
|
||||||
GMutex *mutex;
|
Mutex mutex;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger this object after you have modified #command.
|
* Trigger this object after you have modified #command.
|
||||||
*/
|
*/
|
||||||
GCond *cond;
|
Cond cond;
|
||||||
|
|
||||||
enum player_command command;
|
enum player_command command;
|
||||||
enum player_state state;
|
enum player_state state;
|
||||||
@ -158,7 +160,7 @@ struct player_control {
|
|||||||
static inline void
|
static inline void
|
||||||
player_lock(struct player_control *pc)
|
player_lock(struct player_control *pc)
|
||||||
{
|
{
|
||||||
g_mutex_lock(pc->mutex);
|
pc->mutex.lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -167,7 +169,7 @@ player_lock(struct player_control *pc)
|
|||||||
static inline void
|
static inline void
|
||||||
player_unlock(struct player_control *pc)
|
player_unlock(struct player_control *pc)
|
||||||
{
|
{
|
||||||
g_mutex_unlock(pc->mutex);
|
pc->mutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -178,7 +180,7 @@ player_unlock(struct player_control *pc)
|
|||||||
static inline void
|
static inline void
|
||||||
player_wait(struct player_control *pc)
|
player_wait(struct player_control *pc)
|
||||||
{
|
{
|
||||||
g_cond_wait(pc->cond, pc->mutex);
|
pc->cond.wait(pc->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -198,7 +200,7 @@ player_wait_decoder(struct player_control *pc, struct decoder_control *dc);
|
|||||||
static inline void
|
static inline void
|
||||||
player_signal(struct player_control *pc)
|
player_signal(struct player_control *pc)
|
||||||
{
|
{
|
||||||
g_cond_signal(pc->cond);
|
pc->cond.signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -147,7 +147,7 @@ player_command_finished_locked(struct player_control *pc)
|
|||||||
assert(pc->command != PLAYER_COMMAND_NONE);
|
assert(pc->command != PLAYER_COMMAND_NONE);
|
||||||
|
|
||||||
pc->command = PLAYER_COMMAND_NONE;
|
pc->command = PLAYER_COMMAND_NONE;
|
||||||
g_cond_signal(pc->cond);
|
pc->cond.signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user