]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1748: macOS: Default scheduler priority too low v9.1.1748
authorLuna Razzaghipour <luna@xoria.org>
Wed, 10 Sep 2025 07:55:51 +0000 (03:55 -0400)
committerChristian Brabandt <cb@256bit.org>
Wed, 10 Sep 2025 07:55:51 +0000 (03:55 -0400)
Problem:  macOS: Default scheduler priority too low
Solution: Explicitly set TASK_DEFAULT_APPLICATION scheduler priority
          to improve responsiveness (Luna Razzaghipour).

closes: #18120

Signed-off-by: Luna Razzaghipour <luna@xoria.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/doc/version9.txt
runtime/doc/vi_diff.txt
src/os_mac.h
src/os_unix.c
src/version.c

index adb9bedd0e4b7bf176cc9e854ff160ff2961bf37..c7f725badac0637da22e73ddc1d4a3cc9939ffd4 100644 (file)
@@ -1,4 +1,4 @@
-*version9.txt*  For Vim version 9.1.  Last change: 2025 Sep 09
+*version9.txt*  For Vim version 9.1.  Last change: 2025 Sep 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -41621,6 +41621,7 @@ Platform specific~
 - The Win32 GUI comes with better toolbar icons.
 
 - Better fullscreen support for Haiku |os_haiku.txt|.
+
                                                        *new-other-9.2*
 Other new features ~
 ------------------
@@ -41763,6 +41764,7 @@ Others: ~
 Platform specific ~
 - MS-Winodws: Paths like "\Windows" and "/Windows" are now considered to be
   absolute paths (to the current drive) and no longer relative.
+- macOS: increase default scheduler priority to TASK_DEFAULT_APPLICATION.
 
                                                        *added-9.2*
 Added ~
index cf977380cc36f7303cd61af9251052a9630ff9e6..94ae22610d47f69b3429a201ed5fe9db65ba9e3e 100644 (file)
@@ -1,4 +1,4 @@
-*vi_diff.txt*   For Vim version 9.1.  Last change: 2025 Sep 08
+*vi_diff.txt*   For Vim version 9.1.  Last change: 2025 Sep 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1381,7 +1381,7 @@ System                            | Status:~
 Amiga (OS4, AROS & MorphOS):   | still supported (?)
 Haiku:                         | supported
 Linux:                         | fully supported (on maintained versions)
-Mac OS:                                | fully supported up until v10.6 (?)
+macOS:                         | fully supported up until v10.6 (?)
 MS-Windows 7, 8, 10, 11:       | fully supported
 OpenVMS:                       | supported
 QNX:                           | still supported (?)
index 34fe1f14cbc8614763f886fcd03ace36c6a39e31..6c23f4cb6668bc685132e0570b9deab1b8e159b2 100644 (file)
 #include <time.h>
 #include <dirent.h>
 
+/*
+ * Mach interface
+ */
+#include <mach/task.h>
+
 /*
  * MacOS specific #define
  */
index 1094899390d19a41a6b94a6892363c2eb66df7a3..47c24b107c7a81279af881f25fa9adfce8446187 100644 (file)
@@ -3676,6 +3676,15 @@ mch_early_init(void)
     signal_stack = alloc(get_signal_stack_size());
     init_signal_stack();
 #endif
+
+    /*
+     * Inform the macOS scheduler that Vim renders UI, and so shouldn’t have its
+     * threads’ quality of service classes clamped.
+     */
+#ifdef MACOS_X
+    integer_t policy = TASK_DEFAULT_APPLICATION;
+    task_policy_set(mach_task_self(), TASK_CATEGORY_POLICY, &policy, 1);
+#endif
 }
 
 #if defined(EXITFREE) || defined(PROTO)
index 44eb6d961e735932e8af69ecb5733a49a89316ac..85ccf3fa84b5d299a06fe2d5e12c67ec9c2625db 100644 (file)
@@ -724,6 +724,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1748,
 /**/
     1747,
 /**/