[gnome-shell] shell/screenshot: Check preconditions of public API



commit b4162afa65382ebe6451bcfea7d9e8173b12f726
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue Mar 24 08:45:12 2020 +0100

    shell/screenshot: Check preconditions of public API
    
    It's good practice to guard public API against programmer errors,
    so add the usual g_return*_if_fail() calls.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123

 src/shell-screenshot.c | 49 +++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 41 insertions(+), 8 deletions(-)
---
diff --git a/src/shell-screenshot.c b/src/shell-screenshot.c
index de95b8a729..14da0cad17 100644
--- a/src/shell-screenshot.c
+++ b/src/shell-screenshot.c
@@ -479,10 +479,15 @@ shell_screenshot_screenshot (ShellScreenshot     *screenshot,
                              gpointer             user_data)
 {
   ClutterActor *stage;
-  ShellScreenshotPrivate *priv = screenshot->priv;
+  ShellScreenshotPrivate *priv;
   gboolean use_paint_signal = FALSE;
   GTask *result;
 
+  g_return_if_fail (SHELL_IS_SCREENSHOT (screenshot));
+  g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
+
+  priv = screenshot->priv;
+
   if (priv->stream != NULL) {
     if (callback)
       g_task_report_new_error (screenshot,
@@ -549,6 +554,8 @@ shell_screenshot_screenshot_finish (ShellScreenshot        *screenshot,
                                     cairo_rectangle_int_t **area,
                                     GError                **error)
 {
+  g_return_val_if_fail (SHELL_IS_SCREENSHOT (screenshot), FALSE);
+  g_return_val_if_fail (G_IS_TASK (result), FALSE);
   g_return_val_if_fail (g_async_result_is_tagged (result,
                                                   shell_screenshot_screenshot),
                         FALSE);
@@ -582,9 +589,14 @@ shell_screenshot_screenshot_area (ShellScreenshot     *screenshot,
                                   gpointer             user_data)
 {
   ClutterActor *stage;
-  ShellScreenshotPrivate *priv = screenshot->priv;
+  ShellScreenshotPrivate *priv;
   GTask *result;
 
+  g_return_if_fail (SHELL_IS_SCREENSHOT (screenshot));
+  g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
+
+  priv = screenshot->priv;
+
   if (priv->stream != NULL) {
     if (callback)
       g_task_report_new_error (screenshot,
@@ -635,6 +647,8 @@ shell_screenshot_screenshot_area_finish (ShellScreenshot        *screenshot,
                                          cairo_rectangle_int_t **area,
                                          GError                **error)
 {
+  g_return_val_if_fail (SHELL_IS_SCREENSHOT (screenshot), FALSE);
+  g_return_val_if_fail (G_IS_TASK (result), FALSE);
   g_return_val_if_fail (g_async_result_is_tagged (result,
                                                   shell_screenshot_screenshot_area),
                         FALSE);
@@ -663,12 +677,19 @@ shell_screenshot_screenshot_window (ShellScreenshot     *screenshot,
                                     GAsyncReadyCallback  callback,
                                     gpointer             user_data)
 {
-  ShellScreenshotPrivate *priv = screenshot->priv;
-  MetaDisplay *display = shell_global_get_display (priv->global);
+  ShellScreenshotPrivate *priv;
+  MetaDisplay *display;
   ClutterActor *stage;
-  MetaWindow *window = meta_display_get_focus_window (display);
+  MetaWindow *window;
   GTask *result;
 
+  g_return_if_fail (SHELL_IS_SCREENSHOT (screenshot));
+  g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
+
+  priv = screenshot->priv;
+  display = shell_global_get_display (priv->global);
+  window = meta_display_get_focus_window (display);
+
   if (priv->stream != NULL || !window) {
     if (callback)
       g_task_report_new_error (screenshot,
@@ -718,6 +739,8 @@ shell_screenshot_screenshot_window_finish (ShellScreenshot        *screenshot,
                                            cairo_rectangle_int_t **area,
                                            GError                **error)
 {
+  g_return_val_if_fail (SHELL_IS_SCREENSHOT (screenshot), FALSE);
+  g_return_val_if_fail (G_IS_TASK (result), FALSE);
   g_return_val_if_fail (g_async_result_is_tagged (result,
                                                   shell_screenshot_screenshot_window),
                         FALSE);
@@ -742,19 +765,24 @@ shell_screenshot_pick_color (ShellScreenshot     *screenshot,
                              GAsyncReadyCallback  callback,
                              gpointer             user_data)
 {
-  ShellScreenshotPrivate *priv = screenshot->priv;
-  MetaDisplay *display = shell_global_get_display (priv->global);
+  ShellScreenshotPrivate *priv;
+  MetaDisplay *display;
   ClutterActor *stage;
   GTask *result;
 
+  g_return_if_fail (SHELL_IS_SCREENSHOT (screenshot));
+
   result = g_task_new (screenshot, NULL, callback, user_data);
   g_task_set_source_tag (result, shell_screenshot_pick_color);
 
+  priv = screenshot->priv;
+
   priv->screenshot_area.x = x;
   priv->screenshot_area.y = y;
   priv->screenshot_area.width = 1;
   priv->screenshot_area.height = 1;
 
+  display = shell_global_get_display (priv->global);
   stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
 
   meta_disable_unredirect_for_display (display);
@@ -795,8 +823,11 @@ shell_screenshot_pick_color_finish (ShellScreenshot  *screenshot,
                                     ClutterColor     *color,
                                     GError          **error)
 {
-  ShellScreenshotPrivate *priv = screenshot->priv;
+  ShellScreenshotPrivate *priv;
 
+  g_return_val_if_fail (SHELL_IS_SCREENSHOT (screenshot), FALSE);
+  g_return_val_if_fail (G_IS_TASK (result), FALSE);
+  g_return_val_if_fail (color != NULL, FALSE);
   g_return_val_if_fail (g_async_result_is_tagged (result,
                                                   shell_screenshot_pick_color),
                         FALSE);
@@ -804,6 +835,8 @@ shell_screenshot_pick_color_finish (ShellScreenshot  *screenshot,
   if (!g_task_propagate_boolean (G_TASK (result), error))
     return FALSE;
 
+  priv = screenshot->priv;
+
   /* protect against mutter changing the format used for stage captures */
   g_assert (cairo_image_surface_get_format (priv->image) == CAIRO_FORMAT_ARGB32);
 


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