[vlc-commits] [Git][videolan/vlc][master] 2 commits: preparser: hold the request before submitting it
Steve Lhomme (@robUx4)
gitlab at videolan.org
Fri Jul 17 09:00:25 UTC 2026
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
ee4c2d8e by Michal Porubcin at 2026-07-17T08:29:43+00:00
preparser: hold the request before submitting it
- - - - -
14b145e1 by Michal Porubcin at 2026-07-17T08:29:43+00:00
lib: parser: retain the task before pushing the request
- - - - -
2 changed files:
- lib/parser.c
- src/preparser/internal.c
Changes:
=====================================
lib/parser.c
=====================================
@@ -317,6 +317,8 @@ libvlc_parser_queue(libvlc_parser_t *parser,
if (task == NULL)
return NULL;
+ libvlc_parser_task_retain(task);
+
task->preparser_req = vlc_preparser_Push(parser->preparser,
item,
type_options,
@@ -329,7 +331,7 @@ libvlc_parser_queue(libvlc_parser_t *parser,
return NULL;
}
- return libvlc_parser_task_retain(task);
+ return task;
}
libvlc_parser_task *
@@ -380,6 +382,8 @@ libvlc_parser_queue_thumbnailing(libvlc_parser_t *parser,
thumb_arg.seek.speed = req->seek.speed == libvlc_media_thumbnail_seek_fast
? VLC_THUMBNAILER_SEEK_FAST : VLC_THUMBNAILER_SEEK_PRECISE;
+ libvlc_parser_task_retain(task);
+
task->preparser_req = vlc_preparser_GenerateThumbnail(parser->preparser, item, &thumb_arg,
&thumbnailer_callbacks, task);
@@ -389,7 +393,7 @@ libvlc_parser_queue_thumbnailing(libvlc_parser_t *parser,
return NULL;
}
- return libvlc_parser_task_retain(task);
+ return task;
}
size_t libvlc_parser_cancel_request(libvlc_parser_t *parser,
=====================================
src/preparser/internal.c
=====================================
@@ -657,17 +657,26 @@ preparser_Push( void *opaque, input_item_t *item,
struct vlc_preparser_req_owner *req_owner = preparser_req_get_owner(req);
+ PreparserRequestRetain(req);
+
if (preparser->parser != NULL)
{
PreparserAddTask(preparser, req);
vlc_executor_Submit(preparser->parser, &req_owner->runnable);
- return PreparserRequestRetain(req);
+ return req;
}
int ret = Fetch(req);
- return ret == VLC_SUCCESS ? PreparserRequestRetain(req) : NULL;
+ if (ret != VLC_SUCCESS)
+ {
+ /* Never submitted: drop the caller and the task references */
+ vlc_preparser_req_Release(req);
+ vlc_preparser_req_Release(req);
+ return NULL;
+ }
+ return req;
}
static vlc_preparser_req *
@@ -696,9 +705,10 @@ preparser_GenerateThumbnail( void *opaque, input_item_t *item,
struct vlc_preparser_req_owner *req_owner = preparser_req_get_owner(req);
+ PreparserRequestRetain(req);
vlc_executor_Submit(preparser->thumbnailer, &req_owner->runnable);
- return PreparserRequestRetain(req);
+ return req;
}
static int
@@ -843,9 +853,10 @@ preparser_GenerateThumbnailToFiles( void *opaque, input_item_t *item,
PreparserAddTask(preparser, req);
+ PreparserRequestRetain(req);
vlc_executor_Submit(preparser->thumbnailer, &req_owner->runnable);
- return PreparserRequestRetain(req);
+ return req;
}
static size_t preparser_Cancel( void *opaque, vlc_preparser_req *req )
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/6d6a801b7d1861d57522625fc491c5cc7511751a...14b145e17b23f3620d4f8c508fdb422ff399ba28
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/6d6a801b7d1861d57522625fc491c5cc7511751a...14b145e17b23f3620d4f8c508fdb422ff399ba28
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help
More information about the vlc-commits
mailing list