From: Leandro Dorileo Date: Thu, 19 Dec 2013 16:52:39 +0000 (-0200) Subject: plugin: implement parser sorting X-Git-Tag: accepted/tizen/generic/20140106.140339~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1fcfe9db17a93c750e4ebfc15b783fa9b8078d35;p=platform%2Fupstream%2Flightmediascanner.git plugin: implement parser sorting Sort the parsers based on its defined order field. The smaller "ordered" plugin will atempt to parse first. --- diff --git a/src/lib/lightmediascanner.c b/src/lib/lightmediascanner.c index 0a7b8fc..037d74d 100644 --- a/src/lib/lightmediascanner.c +++ b/src/lib/lightmediascanner.c @@ -205,6 +205,12 @@ lms_set_progress_callback(lms_t *lms, lms_progress_callback_t cb, const void *da lms->progress.free_data = free_data; } +static int +_plugin_sort(const struct parser *a, const struct parser *b) +{ + return (a->plugin->order - b->plugin->order); +} + /** * Add parser plugin given it's shared object path. * @@ -244,6 +250,8 @@ lms_parser_add(lms_t *lms, const char *so_path) } lms->n_parsers++; + qsort(lms->parsers, lms->n_parsers, sizeof(struct parser), + (comparison_fn_t)_plugin_sort); return parser->plugin; } diff --git a/src/lib/lightmediascanner_plugin.h b/src/lib/lightmediascanner_plugin.h index 477f132..4eece6a 100644 --- a/src/lib/lightmediascanner_plugin.h +++ b/src/lib/lightmediascanner_plugin.h @@ -173,6 +173,7 @@ extern "C" { lms_plugin_setup_fn_t setup; /**< setup (1st phase init) */ lms_plugin_start_fn_t start; /**< start (2nd phase init) */ lms_plugin_finish_fn_t finish; /**< finish plugin */ + int order; }; struct lms_plugin_info { diff --git a/src/plugins/asf/asf.c b/src/plugins/asf/asf.c index 0c2c793..065b5c8 100644 --- a/src/plugins/asf/asf.c +++ b/src/plugins/asf/asf.c @@ -904,6 +904,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/audio-dummy/audio-dummy.c b/src/plugins/audio-dummy/audio-dummy.c index b06a0b4..165af27 100644 --- a/src/plugins/audio-dummy/audio-dummy.c +++ b/src/plugins/audio-dummy/audio-dummy.c @@ -127,6 +127,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/dummy/dummy.c b/src/plugins/dummy/dummy.c index 02a830f..fc07966 100644 --- a/src/plugins/dummy/dummy.c +++ b/src/plugins/dummy/dummy.c @@ -97,6 +97,7 @@ lms_plugin_open(void) plugin->setup = _setup; plugin->start = _start; plugin->finish = _finish; + plugin->order = 0; return plugin; } diff --git a/src/plugins/flac/flac.c b/src/plugins/flac/flac.c index 1339193..08b5e1b 100644 --- a/src/plugins/flac/flac.c +++ b/src/plugins/flac/flac.c @@ -196,6 +196,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/id3/id3.c b/src/plugins/id3/id3.c index de56dfc..beb0122 100644 --- a/src/plugins/id3/id3.c +++ b/src/plugins/id3/id3.c @@ -1383,6 +1383,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/jpeg/jpeg.c b/src/plugins/jpeg/jpeg.c index 23c7aaf..9686320 100644 --- a/src/plugins/jpeg/jpeg.c +++ b/src/plugins/jpeg/jpeg.c @@ -748,6 +748,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/m3u/m3u.c b/src/plugins/m3u/m3u.c index 6888488..9f727ad 100644 --- a/src/plugins/m3u/m3u.c +++ b/src/plugins/m3u/m3u.c @@ -193,6 +193,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/mp4/mp4.c b/src/plugins/mp4/mp4.c index 09e2c40..286bcab 100644 --- a/src/plugins/mp4/mp4.c +++ b/src/plugins/mp4/mp4.c @@ -2652,6 +2652,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/ogg/ogg.c b/src/plugins/ogg/ogg.c index 5eef05a..80ca298 100644 --- a/src/plugins/ogg/ogg.c +++ b/src/plugins/ogg/ogg.c @@ -601,6 +601,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/pls/pls.c b/src/plugins/pls/pls.c index 69cc462..9f628fb 100644 --- a/src/plugins/pls/pls.c +++ b/src/plugins/pls/pls.c @@ -375,6 +375,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/png/png.c b/src/plugins/png/png.c index fedd67f..681facf 100644 --- a/src/plugins/png/png.c +++ b/src/plugins/png/png.c @@ -241,6 +241,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/rm/rm.c b/src/plugins/rm/rm.c index 6277f93..60a15a7 100644 --- a/src/plugins/rm/rm.c +++ b/src/plugins/rm/rm.c @@ -547,6 +547,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/video-dummy/video-dummy.c b/src/plugins/video-dummy/video-dummy.c index df6e9c1..2bce1bc 100644 --- a/src/plugins/video-dummy/video-dummy.c +++ b/src/plugins/video-dummy/video-dummy.c @@ -134,6 +134,7 @@ lms_plugin_open(void) plugin->plugin.setup = (lms_plugin_setup_fn_t)_setup; plugin->plugin.start = (lms_plugin_start_fn_t)_start; plugin->plugin.finish = (lms_plugin_finish_fn_t)_finish; + plugin->plugin.order = 0; return (struct lms_plugin *)plugin; } diff --git a/src/plugins/wave/wave.c b/src/plugins/wave/wave.c index 71008bb..9144545 100644 --- a/src/plugins/wave/wave.c +++ b/src/plugins/wave/wave.c @@ -322,6 +322,7 @@ lms_plugin_open(void) plugin->setup = (lms_plugin_setup_fn_t) _setup; plugin->start = (lms_plugin_start_fn_t) _start; plugin->finish = (lms_plugin_finish_fn_t) _finish; + plugin->order = 0; return plugin; }