input_stream: non-blocking I/O
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins.
This commit is contained in:
@@ -173,15 +173,17 @@ struct iso9660_input_stream {
|
||||
};
|
||||
|
||||
static struct input_stream *
|
||||
iso9660_archive_open_stream(struct archive_file *file,
|
||||
const char *pathname, GError **error_r)
|
||||
iso9660_archive_open_stream(struct archive_file *file, const char *pathname,
|
||||
GMutex *mutex, GCond *cond,
|
||||
GError **error_r)
|
||||
{
|
||||
struct iso9660_archive_file *context =
|
||||
(struct iso9660_archive_file *)file;
|
||||
struct iso9660_input_stream *iis;
|
||||
|
||||
iis = g_new(struct iso9660_input_stream, 1);
|
||||
input_stream_init(&iis->base, &iso9660_input_plugin, pathname);
|
||||
input_stream_init(&iis->base, &iso9660_input_plugin, pathname,
|
||||
mutex, cond);
|
||||
|
||||
iis->archive = context;
|
||||
iis->statbuf = iso9660_ifs_stat_translate(context->iso, pathname);
|
||||
|
||||
Reference in New Issue
Block a user