mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-05-08 14:33:23 +00:00
fix OpenGl error (#2185)
This commit is contained in:
@@ -90,6 +90,10 @@ class AmneziaActivity : QtActivity() {
|
|||||||
|
|
||||||
private val actionResultHandlers = mutableMapOf<Int, ActivityResultHandler>()
|
private val actionResultHandlers = mutableMapOf<Int, ActivityResultHandler>()
|
||||||
private val permissionRequestHandlers = mutableMapOf<Int, PermissionRequestHandler>()
|
private val permissionRequestHandlers = mutableMapOf<Int, PermissionRequestHandler>()
|
||||||
|
|
||||||
|
private var isActivityResumed = false
|
||||||
|
private var hasWindowFocus = false
|
||||||
|
private val resumeHandler = Handler(Looper.getMainLooper())
|
||||||
|
|
||||||
private val vpnServiceEventHandler: Handler by lazy(NONE) {
|
private val vpnServiceEventHandler: Handler by lazy(NONE) {
|
||||||
object : Handler(Looper.getMainLooper()) {
|
object : Handler(Looper.getMainLooper()) {
|
||||||
@@ -262,6 +266,10 @@ class AmneziaActivity : QtActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
|
isActivityResumed = false
|
||||||
|
hasWindowFocus = false
|
||||||
|
// Cancel all pending operations when activity stops
|
||||||
|
resumeHandler.removeCallbacksAndMessages(null)
|
||||||
Log.d(TAG, "Stop Amnezia activity")
|
Log.d(TAG, "Stop Amnezia activity")
|
||||||
doUnbindService()
|
doUnbindService()
|
||||||
mainScope.launch {
|
mainScope.launch {
|
||||||
@@ -273,7 +281,13 @@ class AmneziaActivity : QtActivity() {
|
|||||||
|
|
||||||
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
override fun onWindowFocusChanged(hasFocus: Boolean) {
|
||||||
super.onWindowFocusChanged(hasFocus)
|
super.onWindowFocusChanged(hasFocus)
|
||||||
|
hasWindowFocus = hasFocus
|
||||||
Log.d(TAG, "Window focus changed: hasFocus=$hasFocus")
|
Log.d(TAG, "Window focus changed: hasFocus=$hasFocus")
|
||||||
|
|
||||||
|
// Cancel pending operations if window loses focus
|
||||||
|
if (!hasFocus) {
|
||||||
|
resumeHandler.removeCallbacksAndMessages(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
||||||
@@ -316,30 +330,42 @@ class AmneziaActivity : QtActivity() {
|
|||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
|
isActivityResumed = false
|
||||||
|
// Cancel all pending operations when activity pauses
|
||||||
|
resumeHandler.removeCallbacksAndMessages(null)
|
||||||
Log.d(TAG, "Pause Amnezia activity")
|
Log.d(TAG, "Pause Amnezia activity")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
isActivityResumed = true
|
||||||
|
Log.d(TAG, "Resume Amnezia activity")
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||||
window.decorView.apply {
|
window.decorView.apply {
|
||||||
invalidate()
|
invalidate()
|
||||||
|
|
||||||
postDelayed({
|
resumeHandler.postDelayed({
|
||||||
sendTouch(1f, 1f)
|
// Check if activity is still resumed and has focus before executing
|
||||||
|
if (isActivityResumed && hasWindowFocus && !isFinishing && !isDestroyed) {
|
||||||
|
sendTouch(1f, 1f)
|
||||||
|
}
|
||||||
}, 100)
|
}, 100)
|
||||||
|
|
||||||
postDelayed({
|
resumeHandler.postDelayed({
|
||||||
sendTouch(2f, 2f)
|
if (isActivityResumed && hasWindowFocus && !isFinishing && !isDestroyed) {
|
||||||
|
sendTouch(2f, 2f)
|
||||||
|
}
|
||||||
}, 200)
|
}, 200)
|
||||||
|
|
||||||
postDelayed({
|
resumeHandler.postDelayed({
|
||||||
requestLayout()
|
if (isActivityResumed && hasWindowFocus && !isFinishing && !isDestroyed) {
|
||||||
invalidate()
|
requestLayout()
|
||||||
|
invalidate()
|
||||||
|
}
|
||||||
}, 250)
|
}, 250)
|
||||||
}
|
}
|
||||||
} */
|
}
|
||||||
Log.d(TAG, "Resume Amnezia activity")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun configureWindowForEdgeToEdge() {
|
private fun configureWindowForEdgeToEdge() {
|
||||||
@@ -402,6 +428,10 @@ class AmneziaActivity : QtActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
isActivityResumed = false
|
||||||
|
hasWindowFocus = false
|
||||||
|
// Cancel all pending operations when activity is destroyed
|
||||||
|
resumeHandler.removeCallbacksAndMessages(null)
|
||||||
Log.d(TAG, "Destroy Amnezia activity")
|
Log.d(TAG, "Destroy Amnezia activity")
|
||||||
unregisterBroadcastReceiver(notificationStateReceiver)
|
unregisterBroadcastReceiver(notificationStateReceiver)
|
||||||
notificationStateReceiver = null
|
notificationStateReceiver = null
|
||||||
|
|||||||
Reference in New Issue
Block a user