fix glfw wayland for minecraft
This commit is contained in:
parent
e0587033d2
commit
6fc7b21c86
|
@ -5,9 +5,30 @@ in with lib; {
|
||||||
environment.systemPackages = let
|
environment.systemPackages = let
|
||||||
# https://github.com/Admicos/minecraft-wayland
|
# https://github.com/Admicos/minecraft-wayland
|
||||||
glfw-patched = pkgs.glfw-wayland.overrideAttrs (attrs: {
|
glfw-patched = pkgs.glfw-wayland.overrideAttrs (attrs: {
|
||||||
patches = attrs.patches ++ [
|
src = pkgs.fetchzip {
|
||||||
|
version = "3.4.0";
|
||||||
|
url =
|
||||||
|
"https://github.com/glfw/glfw/archive/62e175ef9fae75335575964c845a302447c012c7.tar.gz";
|
||||||
|
sha256 = "sha256-GiY4d7xadR0vN5uCQyWaOpoo2o6uMGl1fCcX4uDGnks=";
|
||||||
|
};
|
||||||
|
buildInputs = with pkgs;
|
||||||
|
with pkgs.xorg; [
|
||||||
|
wayland
|
||||||
|
wayland-protocols
|
||||||
|
libxkbcommon
|
||||||
|
libX11
|
||||||
|
libXrandr
|
||||||
|
libXinerama
|
||||||
|
libXcursor
|
||||||
|
libXi
|
||||||
|
libXext
|
||||||
|
];
|
||||||
|
patches = [
|
||||||
../../../patches/minecraft/0003-Don-t-crash-on-calls-to-focus-or-icon.patch
|
../../../patches/minecraft/0003-Don-t-crash-on-calls-to-focus-or-icon.patch
|
||||||
../../../patches/minecraft/0004-wayland-fix-broken-opengl-screenshots-on-mutter.patch
|
../../../patches/minecraft/0004-wayland-fix-broken-opengl-screenshots-on-mutter.patch
|
||||||
|
../../../patches/minecraft/0005-Add-warning-about-being-an-unofficial-patch.patch
|
||||||
|
# ../../../patches/minecraft/0006-Don-t-crash-getting-scancode-name.patch
|
||||||
|
../../../patches/minecraft/0007-Platform-Prefer-Wayland-over-X11.patch
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
stable-packages = with pkgs; [
|
stable-packages = with pkgs; [
|
||||||
|
|
|
@ -8,26 +8,26 @@ Subject: Don't crash on calls to focus or icon
|
||||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/wl_window.c b/src/wl_window.c
|
diff --git a/src/wl_window.c b/src/wl_window.c
|
||||||
index ec4e60cd..b8fc39e4 100644
|
index 656743a9..c36b11cd 100644
|
||||||
--- a/src/wl_window.c
|
--- a/src/wl_window.c
|
||||||
+++ b/src/wl_window.c
|
+++ b/src/wl_window.c
|
||||||
@@ -1042,8 +1042,7 @@ void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
|
@@ -885,8 +885,7 @@ void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
|
||||||
void _glfwPlatformSetWindowIcon(_GLFWwindow* window,
|
void _glfwPlatformSetWindowIcon(_GLFWwindow* window,
|
||||||
int count, const GLFWimage* images)
|
int count, const GLFWimage* images)
|
||||||
{
|
{
|
||||||
- _glfwInputError(GLFW_PLATFORM_ERROR,
|
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
|
||||||
- "Wayland: Setting window icon not supported");
|
- "Wayland: The platform does not support setting the window icon");
|
||||||
+ fprintf(stderr, "!!! Ignoring Error: Wayland: Setting window icon not supported\n");
|
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the window icon\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformGetWindowPos(_GLFWwindow* window, int* xpos, int* ypos)
|
void _glfwPlatformGetWindowPos(_GLFWwindow* window, int* xpos, int* ypos)
|
||||||
@@ -1231,8 +1230,7 @@ void _glfwPlatformRequestWindowAttention(_GLFWwindow* window)
|
@@ -1042,8 +1041,7 @@ void _glfwPlatformRequestWindowAttention(_GLFWwindow* window)
|
||||||
|
|
||||||
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
- _glfwInputError(GLFW_PLATFORM_ERROR,
|
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
|
||||||
- "Wayland: Focusing a window requires user interaction");
|
- "Wayland: The platform does not support setting the input focus");
|
||||||
+ fprintf(stderr, "!!! Ignoring Error: Wayland: Focusing a window requires user interaction\n");
|
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the input focus\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformSetWindowMonitor(_GLFWwindow* window,
|
void _glfwPlatformSetWindowMonitor(_GLFWwindow* window,
|
||||||
|
|
|
@ -8,7 +8,7 @@ Subject: wayland: fix broken opengl screenshots on mutter
|
||||||
1 file changed, 8 insertions(+)
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
diff --git a/src/egl_context.c b/src/egl_context.c
|
diff --git a/src/egl_context.c b/src/egl_context.c
|
||||||
index 6b34f724..b0a810d8 100644
|
index 975c67be..b5cbeaff 100644
|
||||||
--- a/src/egl_context.c
|
--- a/src/egl_context.c
|
||||||
+++ b/src/egl_context.c
|
+++ b/src/egl_context.c
|
||||||
@@ -175,6 +175,14 @@ static GLFWbool chooseEGLConfig(const _GLFWctxconfig* ctxconfig,
|
@@ -175,6 +175,14 @@ static GLFWbool chooseEGLConfig(const _GLFWctxconfig* ctxconfig,
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Ecmel=20Berk=20Canl=C4=B1er?= <me@ecmelberk.com>
|
||||||
|
Date: Tue, 28 Dec 2021 19:25:30 +0300
|
||||||
|
Subject: Add warning about being an unofficial patch
|
||||||
|
|
||||||
|
This is just to help mod developers and other people who don't need to
|
||||||
|
care about this patchset to ignore any issues that are not their fault.
|
||||||
|
---
|
||||||
|
src/init.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/init.c b/src/init.c
|
||||||
|
index 25a6b4f3..c0ba6d31 100644
|
||||||
|
--- a/src/init.c
|
||||||
|
+++ b/src/init.c
|
||||||
|
@@ -261,6 +261,12 @@ GLFWAPI int glfwInit(void)
|
||||||
|
_glfw.timer.offset = _glfwPlatformGetTimerValue();
|
||||||
|
|
||||||
|
glfwDefaultWindowHints();
|
||||||
|
+
|
||||||
|
+ fprintf(stderr, "!!! Patched GLFW from https://github.com/Admicos/minecraft-wayland\n"
|
||||||
|
+ "!!! If any issues with the window, or some issues with rendering, occur, "
|
||||||
|
+ "first try with the built-in GLFW, and if that solves the issue, report there first.\n"
|
||||||
|
+ "!!! Use outside Minecraft is untested, and things might break.\n");
|
||||||
|
+
|
||||||
|
return GLFW_TRUE;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Ecmel=20Berk=20Canl=C4=B1er?= <me@ecmelberk.com>
|
||||||
|
Date: Tue, 28 Dec 2021 20:30:44 +0300
|
||||||
|
Subject: Don't crash getting scancode name
|
||||||
|
|
||||||
|
---
|
||||||
|
src/wl_window.c | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/wl_window.c b/src/wl_window.c
|
||||||
|
index c36b11cd..bf188e27 100644
|
||||||
|
--- a/src/wl_window.c
|
||||||
|
+++ b/src/wl_window.c
|
||||||
|
@@ -1205,8 +1205,7 @@ void _glfwPlatformSetCursorMode(_GLFWwindow* window, int mode)
|
||||||
|
const char* _glfwPlatformGetScancodeName(int scancode)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
- _glfwInputError(GLFW_FEATURE_UNIMPLEMENTED,
|
||||||
|
- "Wayland: Key names not yet implemented");
|
||||||
|
+ fprintf(stderr, "!!! Ignoring Error: Wayland: Key names not yet implemented\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
From 352b3bb37d79ddc9b4a7afd9ca8ad26723f17821 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20H=C3=BClsmann?= <fh@cbix.de>
|
||||||
|
Date: Sun, 30 Jan 2022 00:36:32 +0100
|
||||||
|
Subject: [PATCH] Platform: Prefer Wayland over X11
|
||||||
|
|
||||||
|
When GLFW_ANY_PLATFORM is used (which is the default) native
|
||||||
|
Wayland would previously never be chosen if XWayland is also available.
|
||||||
|
---
|
||||||
|
README.md | 1 +
|
||||||
|
src/platform.c | 6 +++---
|
||||||
|
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/README.md b/README.md
|
||||||
|
index 4a3fb85c5a..9ba2994200 100644
|
||||||
|
--- a/README.md
|
||||||
|
+++ b/README.md
|
||||||
|
@@ -268,6 +268,7 @@ information on what to include when reporting a bug.
|
||||||
|
- [Wayland] Added dynamic loading of all Wayland libraries
|
||||||
|
- [Wayland] Added support for key names via xkbcommon
|
||||||
|
- [Wayland] Removed support for `wl_shell` (#1443)
|
||||||
|
+ - [Wayland] Prefer Wayland over X11 if both are available (#2035)
|
||||||
|
- [Wayland] Bugfix: The `GLFW_HAND_CURSOR` shape used the wrong image (#1432)
|
||||||
|
- [Wayland] Bugfix: `CLOCK_MONOTONIC` was not correctly enabled
|
||||||
|
- [Wayland] Bugfix: Repeated keys could be reported with `NULL` window (#1704)
|
||||||
|
diff --git a/src/platform.c b/src/platform.c
|
||||||
|
index d0bbd06df5..61d06787fb 100644
|
||||||
|
--- a/src/platform.c
|
||||||
|
+++ b/src/platform.c
|
||||||
|
@@ -45,12 +45,12 @@ static const struct
|
||||||
|
#if defined(_GLFW_COCOA)
|
||||||
|
{ GLFW_PLATFORM_COCOA, _glfwConnectCocoa },
|
||||||
|
#endif
|
||||||
|
-#if defined(_GLFW_X11)
|
||||||
|
- { GLFW_PLATFORM_X11, _glfwConnectX11 },
|
||||||
|
-#endif
|
||||||
|
#if defined(_GLFW_WAYLAND)
|
||||||
|
{ GLFW_PLATFORM_WAYLAND, _glfwConnectWayland },
|
||||||
|
#endif
|
||||||
|
+#if defined(_GLFW_X11)
|
||||||
|
+ { GLFW_PLATFORM_X11, _glfwConnectX11 },
|
||||||
|
+#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
GLFWbool _glfwSelectPlatform(int desiredID, _GLFWplatform* platform)
|
Loading…
Reference in New Issue