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

Bug#1034161: unblock: muffin/5.6.4-1



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: muffin@packages.debian.org, fantonifabio@tiscali.it
Control: affects -1 + src:muffin

Please unblock package muffin

5.6.4-1 include a new bugfix release with some fixes:
- meta-gpu-xrandr: Account for the current user text scale factor when calculating the crtc scale based on Xft.dpi.
- window.c: Allow meta_window_get_xwindow() to be used with introspection.
- window.c: Restore property notify for the tile mode property.
- place.c: Add missing import.
- display.c: Make meta_display_get_pointer_window() available to cinnamon again.
- clutter-text.c: Remove redundant clutter_text_set_buffer call in finalize.

The symbol added is not a new function but only export of existant function,
making it available again to cinnamon.

I also added replace of libgdk-pixbuf2.0-dev build-dep. with libgdk-pixbuf-2.0-dev, libgdk-pixbuf2.0-dev is a transition metapackage from bullseye so should don't
be a risk FWIK.

No regression found or reported, I think is good to have in bookworm.

[ Risks ]
I consider the risk of regression small

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]

unblock muffin/5.6.4-1
diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c
index 3da410f..e18ed4c 100644
--- a/clutter/clutter/clutter-text.c
+++ b/clutter/clutter/clutter-text.c
@@ -1807,7 +1807,6 @@ clutter_text_finalize (GObject *gobject)
 
   clutter_text_dirty_paint_volume (self);
 
-  clutter_text_set_buffer (self, NULL);
   g_free (priv->font_name);
 
   g_clear_object (&priv->input_focus);
diff --git a/debian/changelog b/debian/changelog
index 88556cf..e435e28 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+muffin (5.6.4-1) unstable; urgency=medium
+
+  * New upstream bugfix version 5.6.4
+  * Replace libgdk-pixbuf2.0-dev build-dep. with libgdk-pixbuf-2.0-dev
+  * Update symbols
+
+ -- Fabio Fantoni <fantonifabio@tiscali.it>  Sun, 19 Mar 2023 22:33:27 +0100
+
 muffin (5.6.3-1) unstable; urgency=medium
 
   * New upstream version 5.6.3
diff --git a/debian/control b/debian/control
index 130f0e7..0626f50 100644
--- a/debian/control
+++ b/debian/control
@@ -149,7 +149,7 @@ Depends: gir1.2-meta-muffin-0.0 (= ${binary:Version}),
          libcinnamon-desktop-dev (>= 5.6),
          libdrm-dev,
          libegl1-mesa-dev,
-         libgdk-pixbuf2.0-dev,
+         libgdk-pixbuf-2.0-dev,
          libgles2-mesa-dev | libgles2-dev,
          libglib2.0-dev,
          libgraphene-1.0-dev (>= 1.9.3),
diff --git a/debian/libmuffin0.symbols b/debian/libmuffin0.symbols
index 2a1f2eb..279e3ed 100644
--- a/debian/libmuffin0.symbols
+++ b/debian/libmuffin0.symbols
@@ -2136,6 +2136,7 @@ libmuffin.so.0 libmuffin0 #MINVER#
  meta_display_get_monitor_scale@Base 5.4.1
  meta_display_get_n_monitors@Base 5.4.1
  meta_display_get_pad_action_label@Base 5.4.1
+ meta_display_get_pointer_window@Base 5.6.4
  meta_display_get_primary_monitor@Base 5.4.1
  meta_display_get_selection@Base 5.4.1
  meta_display_get_size@Base 5.4.1
diff --git a/meson.build b/meson.build
index 63b5fad..d4b4590 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
 project('muffin', 'c',
-  version: '5.6.3',
+  version: '5.6.4',
   meson_version: '>= 0.50.0',
   license: 'GPLv2+'
 )
diff --git a/src/backends/meta-settings-private.h b/src/backends/meta-settings-private.h
index a7241ce..8965e1c 100644
--- a/src/backends/meta-settings-private.h
+++ b/src/backends/meta-settings-private.h
@@ -58,6 +58,8 @@ void meta_settings_update_ui_scaling_factor (MetaSettings *settings);
 gboolean meta_settings_get_global_scaling_factor (MetaSettings *settings,
                                                   int          *scaing_factor);
 
+double meta_settings_get_font_scaling_factor (MetaSettings *settings);
+
 META_EXPORT_TEST
 gboolean meta_settings_is_experimental_feature_enabled (MetaSettings           *settings,
                                                         MetaExperimentalFeature feature);
diff --git a/src/backends/meta-settings.c b/src/backends/meta-settings.c
index e544d65..f4a692f 100644
--- a/src/backends/meta-settings.c
+++ b/src/backends/meta-settings.c
@@ -223,6 +223,12 @@ meta_settings_update_font_dpi (MetaSettings *settings)
     g_signal_emit (settings, signals[FONT_DPI_CHANGED], 0);
 }
 
+double
+meta_settings_get_font_scaling_factor(MetaSettings *settings)
+{
+    return g_settings_get_double (settings->interface_settings, "text-scaling-factor");
+}
+
 int
 meta_settings_get_font_dpi (MetaSettings *settings)
 {
diff --git a/src/backends/x11/meta-gpu-xrandr.c b/src/backends/x11/meta-gpu-xrandr.c
index 65a3c30..f2563e6 100644
--- a/src/backends/x11/meta-gpu-xrandr.c
+++ b/src/backends/x11/meta-gpu-xrandr.c
@@ -98,6 +98,10 @@ static int
 get_current_dpi_scale (MetaMonitorManagerXrandr *manager_xrandr,
                        MetaGpuXrandr            *gpu_xrandr)
 {
+  MetaMonitorManager *monitor_manager = META_MONITOR_MANAGER (manager_xrandr);
+  MetaBackend *backend = meta_monitor_manager_get_backend (monitor_manager);
+  MetaSettings *settings = meta_backend_get_settings (backend);
+
   Atom actual;
   int result, format;
   unsigned long n, left;
@@ -109,10 +113,6 @@ get_current_dpi_scale (MetaMonitorManagerXrandr *manager_xrandr,
   if (gpu_xrandr->resources->timestamp ==
       meta_monitor_manager_xrandr_get_config_timestamp (manager_xrandr))
     {
-      MetaMonitorManager *monitor_manager = META_MONITOR_MANAGER (manager_xrandr);
-      MetaBackend *backend = meta_monitor_manager_get_backend (monitor_manager);
-      MetaSettings *settings = meta_backend_get_settings (backend);
-
       return meta_settings_get_ui_scaling_factor (settings);
     }
 
@@ -139,7 +139,10 @@ get_current_dpi_scale (MetaMonitorManagerXrandr *manager_xrandr,
               dpi = g_ascii_strtoull (res[1], NULL, 10);
 
               if (dpi > 0 && dpi < 96 * 10)
-                return MAX (1, roundf ((float) dpi / 96.0f));
+                {
+                  double factor = meta_settings_get_font_scaling_factor (settings);
+                  return MAX (1, roundf ((float) dpi / 96.0f / factor));
+                }
             }
         }
     }
diff --git a/src/core/display-private.h b/src/core/display-private.h
index e5d8032..00501fc 100644
--- a/src/core/display-private.h
+++ b/src/core/display-private.h
@@ -402,9 +402,6 @@ gboolean meta_display_apply_startup_properties (MetaDisplay *display,
 void meta_display_queue_workarea_recalc  (MetaDisplay *display);
 void meta_display_queue_check_fullscreen (MetaDisplay *display);
 
-MetaWindow *meta_display_get_pointer_window (MetaDisplay *display,
-                                             MetaWindow  *not_this_one);
-
 MetaWindow *meta_display_get_window_from_id (MetaDisplay *display,
                                              uint64_t     window_id);
 uint64_t    meta_display_generate_window_id (MetaDisplay *display);
diff --git a/src/core/display.c b/src/core/display.c
index 517b881..ac9e2ae 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -3788,6 +3788,16 @@ meta_display_get_monitor_in_fullscreen (MetaDisplay *display,
   purposes */ return logical_monitor->in_fullscreen == TRUE;
 }
 
+/**
+ * meta_display_get_pointer_window:
+ * @display: the #MetaDisplay.
+ * @not_this_one: (nullable): window to be excluded
+ *
+ * Gets the #MetaWindow pointed by the mouse
+ *
+ * Return value: (transfer none): the #MetaWindow pointed by the mouse
+ *  %NULL when window not found
+ */
 MetaWindow *
 meta_display_get_pointer_window (MetaDisplay *display,
                                  MetaWindow  *not_this_one)
diff --git a/src/core/place.c b/src/core/place.c
index 9c78b65..716a74a 100644
--- a/src/core/place.c
+++ b/src/core/place.c
@@ -36,6 +36,7 @@
 #include "meta/meta-backend.h"
 #include "meta/prefs.h"
 #include "meta/workspace.h"
+#include "meta/meta-cursor-tracker.h"
 
 typedef enum
 {
diff --git a/src/core/window.c b/src/core/window.c
index fe2e9b3..569502a 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -171,6 +171,8 @@ static MetaWindow *meta_window_find_tile_match (MetaWindow   *window,
                                                 gboolean      vertical);
 static void update_edge_constraints (MetaWindow *window);
 
+static void notify_tile_mode (MetaWindow *window);
+
 /* Idle handlers for the three queues (run with meta_later_add()). The
  * "data" parameter in each case will be a GINT_TO_POINTER of the
  * index into the queue arrays to use.
@@ -3022,6 +3024,7 @@ meta_window_maximize (MetaWindow        *window,
           window->maximized_vertically = FALSE;
           window->tile_mode = META_TILE_NONE;
           from_tiled = TRUE;
+          notify_tile_mode (window);
         }
 
       meta_window_maximize_internal (window,
@@ -3491,11 +3494,20 @@ update_edge_constraints (MetaWindow *window)
     }
 }
 
+static void
+notify_tile_mode (MetaWindow *window)
+{
+  g_object_freeze_notify (G_OBJECT (window));
+  g_object_notify_by_pspec (G_OBJECT (window), obj_props[PROP_TILE_MODE]);
+  g_object_thaw_notify (G_OBJECT (window));
+}
+
 void
 meta_window_tile (MetaWindow   *window,
                   MetaTileMode  tile_mode)
 {
   MetaMaximizeFlags directions;
+  gboolean changed = FALSE;
 
   /* Maximization constraints beat tiling constraints, so if the window
    * is maximized, tiling won't have any effect unless we unmaximize it
@@ -3507,6 +3519,8 @@ meta_window_tile (MetaWindow   *window,
 
   window->maximized_horizontally = FALSE;
   window->maximized_vertically = FALSE;
+
+  changed = tile_mode != window->tile_mode;
   window->tile_mode = tile_mode;
 
   /* Don't do anything if no tiling is requested */
@@ -3561,6 +3575,9 @@ meta_window_tile (MetaWindow   *window,
 
   if (window->frame)
     meta_frame_queue_draw (window->frame);
+
+  if (changed)
+    notify_tile_mode (window);
 }
 
 MetaTileMode
@@ -3692,7 +3709,10 @@ meta_window_unmaximize (MetaWindow        *window,
       meta_window_get_buffer_rect (window, &old_buffer_rect);
 
       if (unmaximize_vertically)
-        window->tile_mode = META_TILE_NONE;
+        {
+          window->tile_mode = META_TILE_NONE;
+          notify_tile_mode (window);
+        }
 
       meta_topic (META_DEBUG_WINDOW_OPS,
                   "Unmaximizing %s%s\n",
@@ -6669,7 +6689,12 @@ update_move (MetaWindow  *window,
        * is enabled, as top edge tiling can be used in that case
        */
       window->shaken_loose = !meta_prefs_get_edge_tiling ();
-      window->tile_mode = META_TILE_NONE;
+
+      if (window->tile_mode != META_TILE_NONE)
+        {
+          window->tile_mode = META_TILE_NONE;
+          notify_tile_mode (window);
+        }
 
       /* move the unmaximized window to the cursor */
       prop =
@@ -6709,7 +6734,12 @@ update_move (MetaWindow  *window,
       MetaRectangle work_area;
       int monitor;
 
-      window->tile_mode = META_TILE_NONE;
+      if (window->tile_mode != META_TILE_NONE)
+        {
+          window->tile_mode = META_TILE_NONE;
+          notify_tile_mode (window);
+        }
+
       wmonitor = window->monitor;
       n_logical_monitors =
         meta_monitor_manager_get_num_logical_monitors (monitor_manager);
@@ -7871,9 +7901,10 @@ meta_window_get_display (MetaWindow *window)
 }
 
 /**
- * meta_window_get_xwindow: (skip)
+ * meta_window_get_xwindow:
  * @window: a #MetaWindow
  *
+ * Returns: (type gulong): The Window (XID) of @window
  */
 Window
 meta_window_get_xwindow (MetaWindow *window)
diff --git a/src/meta/display.h b/src/meta/display.h
index 961d8b3..6e821ae 100644
--- a/src/meta/display.h
+++ b/src/meta/display.h
@@ -285,6 +285,10 @@ int meta_display_get_monitor_neighbor_index (MetaDisplay         *display,
                                              int                  which_monitor,
                                              MetaDisplayDirection dir);
 
+META_EXPORT
+MetaWindow *meta_display_get_pointer_window (MetaDisplay *display,
+                                             MetaWindow  *not_this_one);
+
 META_EXPORT
 void meta_display_focus_default_window (MetaDisplay *display,
                                         guint32      timestamp);

Reply to: