Re: [PATCH virt-viewer 2/3] Report errors when saving screenshot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2017-07-19 at 16:49 -0500, Jonathon Jongsma wrote:
> Currently, the user gets no feedback if the screenshot fails (e.g. if
> they don't have permission to write in the chosen directory, etc). This
> patch adds a simple dialog showing the error message when a screenshot
> fails.
Ack,

Pavel

> ---
>  src/virt-viewer-window.c | 24 ++++++++++++++++--------
>  1 file changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
> index 9a6a738..95a760f 100644
> --- a/src/virt-viewer-window.c
> +++ b/src/virt-viewer-window.c
> @@ -938,34 +938,37 @@ static GdkPixbufFormat *get_image_format(const char
> *filename)
>      return g_hash_table_lookup(image_formats_once.retval, ext);
>  }
>  
> -static void
> +static gboolean
>  virt_viewer_window_save_screenshot(VirtViewerWindow *self,
> -                                   const char *file)
> +                                   const char *file,
> +                                   GError **error)
>  {
>      VirtViewerWindowPrivate *priv = self->priv;
>      GdkPixbuf *pix = virt_viewer_display_get_pixbuf(VIRT_VIEWER_DISPLAY(priv-
> >display));
>      GdkPixbufFormat *format = get_image_format(file);
> +    gboolean result;
>  
>      if (format == NULL) {
>          g_debug("unknown file extension, falling back to png");
>          if (!g_str_has_suffix(file, ".png")) {
>              char *png_filename;
>              png_filename = g_strconcat(file, ".png", NULL);
> -            gdk_pixbuf_save(pix, png_filename, "png", NULL,
> -                            "tEXt::Generator App", PACKAGE, NULL);
> +            result = gdk_pixbuf_save(pix, png_filename, "png", error,
> +                                     "tEXt::Generator App", PACKAGE, NULL);
>              g_free(png_filename);
>          } else {
> -            gdk_pixbuf_save(pix, file, "png", NULL,
> -                            "tEXt::Generator App", PACKAGE, NULL);
> +            result = gdk_pixbuf_save(pix, file, "png", error,
> +                                     "tEXt::Generator App", PACKAGE, NULL);
>          }
>      } else {
>          char *type = gdk_pixbuf_format_get_name(format);
>          g_debug("saving to %s", type);
> -        gdk_pixbuf_save(pix, file, type, NULL, NULL);
> +        result = gdk_pixbuf_save(pix, file, type, error, NULL);
>          g_free(type);
>      }
>  
>      g_object_unref(pix);
> +    return result;
>  }
>  
>  G_MODULE_EXPORT void
> @@ -994,9 +997,14 @@ virt_viewer_window_menu_file_screenshot(GtkWidget *menu
> G_GNUC_UNUSED,
>  
>      if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
>          char *filename;
> +        GError *error = NULL;
>  
>          filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog));
> -        virt_viewer_window_save_screenshot(self, filename);
> +        if (!virt_viewer_window_save_screenshot(self, filename, &error)) {
> +            virt_viewer_app_simple_message_dialog(self->priv->app,
> +                                                  error->message);
> +            g_error_free(error);
> +        }
>          g_free(filename);
>      }
>  

_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list



[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux