mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-07 13:30:09 -05:00
Refactor the work queue
Make a separate work queue to track async operations. Keep separate work queues for links and nodes. This avoids lockups when some async operation take a long time and the work queue has SYNC_WAIT operations.
This commit is contained in:
parent
6d4db64767
commit
474981ddda
9 changed files with 344 additions and 238 deletions
|
|
@ -29,11 +29,6 @@ extern "C" {
|
|||
|
||||
typedef struct _PinosMainLoop PinosMainLoop;
|
||||
|
||||
typedef void (*PinosDeferFunc) (void *obj,
|
||||
void *data,
|
||||
SpaResult res,
|
||||
uint32_t id);
|
||||
|
||||
/**
|
||||
* PinosMainLoop:
|
||||
*
|
||||
|
|
@ -44,19 +39,6 @@ struct _PinosMainLoop {
|
|||
|
||||
PINOS_SIGNAL (destroy_signal, (PinosListener *listener,
|
||||
PinosMainLoop *loop));
|
||||
|
||||
uint32_t (*defer) (PinosMainLoop *loop,
|
||||
void *obj,
|
||||
SpaResult res,
|
||||
PinosDeferFunc func,
|
||||
void *data);
|
||||
void (*defer_cancel) (PinosMainLoop *loop,
|
||||
void *obj,
|
||||
uint32_t id);
|
||||
bool (*defer_complete) (PinosMainLoop *loop,
|
||||
void *obj,
|
||||
uint32_t seq,
|
||||
SpaResult res);
|
||||
};
|
||||
|
||||
PinosMainLoop * pinos_main_loop_new (void);
|
||||
|
|
@ -65,10 +47,6 @@ void pinos_main_loop_destroy (PinosMainLoop *loop
|
|||
void pinos_main_loop_run (PinosMainLoop *loop);
|
||||
void pinos_main_loop_quit (PinosMainLoop *loop);
|
||||
|
||||
#define pinos_main_loop_defer(m,...) (m)->defer(m,__VA_ARGS__)
|
||||
#define pinos_main_loop_defer_cancel(m,...) (m)->defer_cancel(m,__VA_ARGS__)
|
||||
#define pinos_main_loop_defer_complete(m,...) (m)->defer_complete(m,__VA_ARGS__)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue