From ea3dfb136d28635f874a5a2e3955da7f6e80d8d8 Mon Sep 17 00:00:00 2001 From: Mickael Albertus Date: Sat, 3 Feb 2018 11:20:16 +0100 Subject: epub: fix loading epub thumbnails origin commit: https://github.com/linuxmint/xreader/commit/6ed0ee1 Note: origin commit causes some serious build warnings, ......fixed. --- libview/ev-jobs.c | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) (limited to 'libview') diff --git a/libview/ev-jobs.c b/libview/ev-jobs.c index e350376b..0fd2554f 100644 --- a/libview/ev-jobs.c +++ b/libview/ev-jobs.c @@ -92,11 +92,6 @@ enum { FIND_LAST_SIGNAL }; -#if ENABLE_EPUB -static GtkWidget* webview; -static GtkWidget* offscreenwindow; -#endif - static guint job_signals[LAST_SIGNAL] = { 0 }; static guint job_fonts_signals[FONTS_LAST_SIGNAL] = { 0 }; static guint job_find_signals[FIND_LAST_SIGNAL] = { 0 }; @@ -877,8 +872,12 @@ snapshot_callback(WebKitWebView *webview, ev_document_doc_mutex_unlock (); ev_job_succeeded (EV_JOB(job_thumb)); + + gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (webview))); } +#endif /* ENABLE_EPUB */ + static void web_thumbnail_get_screenshot_cb (WebKitWebView *webview, WebKitLoadEvent event, @@ -906,9 +905,10 @@ webview_load_failed_cb (WebKitWebView *webview, GError *e = (GError *) error; g_warning ("Error loading data from %s: %s", failing_uri, e->message); ev_job_failed_from_error (EV_JOB(job_thumb), e); + + gtk_widget_destroy (gtk_widget_get_toplevel (GTK_WIDGET (webview))); return TRUE; } -#endif /* ENABLE_EPUB */ static gboolean ev_job_thumbnail_run (EvJob *job) @@ -939,24 +939,23 @@ ev_job_thumbnail_run (EvJob *job) #if ENABLE_EPUB if (job->document->iswebdocument == TRUE) { - if (!webview) { - webview = webkit_web_view_new(); - g_signal_connect(WEBKIT_WEB_VIEW(webview),"load-changed", - G_CALLBACK(web_thumbnail_get_screenshot_cb), - g_object_ref (job_thumb)); - g_signal_connect(WEBKIT_WEB_VIEW(webview),"load-failed", - G_CALLBACK(webview_load_failed_cb), - g_object_ref (job_thumb)); - } - - if (!offscreenwindow) { - offscreenwindow = gtk_offscreen_window_new(); - gtk_container_add(GTK_CONTAINER(offscreenwindow),GTK_WIDGET(webview)); - gtk_window_set_default_size (GTK_WINDOW(offscreenwindow),800,1080); - gtk_widget_show_all(offscreenwindow); - } - - webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview),(gchar*)rc->page->backend_page); + GtkWidget *webview; + GtkWidget *offscreenwindow; + + webview = webkit_web_view_new (); + offscreenwindow = gtk_offscreen_window_new (); + + gtk_container_add (GTK_CONTAINER(offscreenwindow), GTK_WIDGET (webview)); + gtk_window_set_default_size (GTK_WINDOW(offscreenwindow), 800, 1080); + gtk_widget_show_all (offscreenwindow); + + g_signal_connect (WEBKIT_WEB_VIEW (webview), "load-changed", + G_CALLBACK (web_thumbnail_get_screenshot_cb), + g_object_ref (job_thumb)); + g_signal_connect (WEBKIT_WEB_VIEW(webview), "load-failed", + G_CALLBACK(webview_load_failed_cb), + g_object_ref (job_thumb)); + webkit_web_view_load_uri (WEBKIT_WEB_VIEW (webview), (gchar*) rc->page->backend_page); } else #endif /* ENABLE_EPUB */ -- cgit v1.2.1