From b906ed4e5902785ab6f15012666e344c98fabe14 Mon Sep 17 00:00:00 2001
From: Maksim Gamarnik <MoNTE48@mail.ua>
Date: Sat, 14 May 2016 23:35:56 +1000
Subject: [PATCH] Fix locked hardware buttons on Android

Fixes #2122
Fixes #1454

Addendum (est31)
According from its docs in android_native_app_glue.h (from the NDK), the
onInputEvent should "Return 1 if you have handled the event, 0 for any
default dispatching". Before, we always returned 1, meaning we blocked
all hardware keys to be given to the OS.
This broke the volume keys and has caused #2122 and #1454.

Although it bases on lots of guesswork, it can probably safely be said that
CGUIEnvironment::postEventFromUser returns true if the event was handled,
and false if not. Therefore, set the status variable depending on what
postEventFromUser returned.
---
 .../patches/irrlicht-back_button.patch        | 23 ++++++++++---------
 .../MtNativeActivity.java                     |  4 ++++
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/build/android/patches/irrlicht-back_button.patch b/build/android/patches/irrlicht-back_button.patch
index 227749ba7..de567adc0 100644
--- a/build/android/patches/irrlicht-back_button.patch
+++ b/build/android/patches/irrlicht-back_button.patch
@@ -1,14 +1,15 @@
---- irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp	2014-06-03 20:56:21.289559503 +0200
-+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp.orig	2014-06-03 20:57:39.281556749 +0200
-@@ -423,6 +423,7 @@
- 			}
- 			
- 			device->postEventFromUser(event);
-+			status = 1;
- 		}
- 		break;
- 		default:
-@@ -479,7 +480,7 @@
+--- irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp.orig	2015-08-29 15:43:09.000000000 +0300
++++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp	2016-05-13 21:36:22.880388505 +0300
+@@ -486,7 +486,7 @@
+ 				event.KeyInput.Char = 0;
+ 			}
+ 
+-			device->postEventFromUser(event);
++			status = device->postEventFromUser(event);
+ 		}
+ 		break;
+ 		default:
+@@ -543,7 +543,7 @@
      KeyMap[1] = KEY_LBUTTON; // AKEYCODE_SOFT_LEFT
      KeyMap[2] = KEY_RBUTTON; // AKEYCODE_SOFT_RIGHT
      KeyMap[3] = KEY_HOME; // AKEYCODE_HOME
diff --git a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
index fc95a8379..3173a71f4 100644
--- a/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
+++ b/build/android/src/main/java/net.minetest.minetest/MtNativeActivity.java
@@ -19,6 +19,10 @@ public class MtNativeActivity extends NativeActivity {
 	public void onDestroy() {
 		super.onDestroy();
 	}
+	
+	@Override
+	public void onBackPressed() {
+	}
 
 
 	public void copyAssets() {
-- 
GitLab