Add support for Onyx Boox Note Air 5C, Fix Onyx Boox black screen on wake after font size change#14956
Merged
Merged
Conversation
On some Onyx Boox devices, the SurfaceView surface is not recreated after the rapid activity cycling that the Boox system performs on wake, leaving android.app.window permanently nil. This caused a black screen after font size change + sleep + wake. The SurfaceView with setZOrderOnTop(true) was introduced for NGL4/Tolino devices. The Onyx Qualcomm EPD API (View.refreshScreen) does not require a SurfaceView — einkUpdate() already falls back to the DecorView content view when no SurfaceView exists. Setting OnyxEPDController.needsView()=false makes Onyx devices use NativeActivity's default DecorView surface, which follows the standard activity lifecycle and correctly survives wake. Fixes koreader#12445
Member
|
Thanks! |
0xstillb
pushed a commit
to 0xstillb/koreader-thai
that referenced
this pull request
May 9, 2026
…wake after font size change (koreader#14956) On some Onyx Boox devices, the SurfaceView surface is not recreated after the rapid activity cycling that the Boox system performs on wake, leaving android.app.window permanently nil. This caused a black screen after font size change + sleep + wake. The SurfaceView with setZOrderOnTop(true) was introduced for NGL4/Tolino devices. The Onyx Qualcomm EPD API (View.refreshScreen) does not require a SurfaceView — einkUpdate() already falls back to the DecorView content view when no SurfaceView exists. Setting OnyxEPDController.needsView()=false makes Onyx devices use NativeActivity's default DecorView surface, which follows the standard activity lifecycle and correctly survives wake. Fixes koreader#12445
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #12445
On some Onyx Boox devices (confirmed on Palma 2), changing font size and then sleeping/waking causes a permanent black screen. The root cause is that Boox firmware performs rapid lifecycle cycling (RESUME/PAUSE/STOP) on wake, and the SurfaceView overlay surface is not recreated during this process;
INIT_WINDOWnever fires, leaving android.app.window` permanently nil.This updates the android-luajit-launcher submodule to include koreader/android-luajit-launcher#579, which changes
OnyxEPDController.needsView()to returnfalse. The Onyx Qualcomm EPD API usesView.refreshScreen()via reflection, which works on any View; it does not require a SurfaceView. Using the NativeActivity's default DecorView surface instead correctly survives the Boox wake lifecycle.This change is