Plugins: allow returning multiple movies per callback invocation
[cinaest] / src / plugins / imdb-plugin.vala
index 5c5e31b..1fb5d8e 100644 (file)
@@ -206,6 +206,9 @@ class IMDbMovie : Movie {
 }
 
 class IMDBSource : MovieSource {
+       SList<Movie> result;
+       int results_waiting;
+
        public override bool active { get; set construct; }
 
        public IMDBSource () {
@@ -218,7 +221,12 @@ class IMDBSource : MovieSource {
                                             "cinaest", "imdb.db", null));
 
                _get_callback = callback;
+               result = new SList<Movie> ();
+               results_waiting = 0;
                int n = yield sqlite.query (filter, receive_movie, limit, cancellable);
+               if (results_waiting > 0)
+                       _get_callback (result);
+               result = new SList<Movie> ();
                return n;
        }
 
@@ -234,7 +242,12 @@ class IMDBSource : MovieSource {
                } else {
                        movie.secondary = movie.genres.to_string ();
                }
-               _get_callback (movie);
+               result.append (movie);
+               if (++results_waiting >= 10) {
+                       _get_callback (result);
+                       result = new SList<Movie> ();
+                       results_waiting = 0;
+               }
        }
 
        public override void add_movie (Movie movie) {