public class Factory : Object {
private static Factory the_factory = null;
- private List<Request> requests;
- dynamic DBus.Object server;
+ internal List<Request> requests;
+ internal dynamic DBus.Object server;
internal bool download_posters;
private GConf.Client gc;
private uint cxnid;
}
private void on_poster_fetched (dynamic DBus.Object server, int handle, string path) {
- foreach (Request request in requests) {
- if (request.handle != handle)
- continue;
- try {
- var pixbuf = new Gdk.Pixbuf.from_file_at_size (path, request.width, request.height);
-
- requests.remove (request);
- request.callback (pixbuf, request.movie);
- return;
- } catch (Error e) {
- warning ("Failed to open poster: %s\n", e.message);
+ Request request = null;
+ foreach (Request r in requests) {
+ if (r.handle == handle) {
+ request = r;
+ break;
}
}
+ if (request == null)
+ return;
+ try {
+ var pixbuf = new Gdk.Pixbuf.from_file_at_size (path, request.width, request.height);
+
+ requests.remove (request);
+ request.callback (pixbuf, request.movie);
+ return;
+ } catch (Error e) {
+ warning ("Failed to open poster: %s\n", e.message);
+ }
}
public void join () {
public static void factory_clean_cache (int max_size, time_t min_mtime) {
}
+
+ public void clear_queue () {
+
+ // FIXME
+ if (server != null)
+ server.unqueue (0);
+
+ requests = null;
+ }
}
public class Request {
public int height;
public void unqueue () {
+ if (Factory.get_instance ().server != null)
+ Factory.get_instance ().server.unqueue (this.handle);
+
+ Factory.get_instance ().requests.remove (this);
}
public void join () {