Neamar / KISS

Lightning fast, open-source, < 250kb Android launcher
https://kisslauncher.com/
GNU General Public License v3.0
2.98k stars 581 forks source link

Crash when scrolling through apps list since 3.17.0 #2020

Open ghost opened 1 year ago

ghost commented 1 year ago

First of all, sorry for not reporting earlier (when 3.17.0 released). The crash still occurs in 3.17.1.

Describe the crash When scrolling through app list (main one or after search), certain apps icons do not show up and KISS end up crashing. Also, the scrolling became quite stuttering when moving over certain apps.

To Reproduce Fresh install, default settings. Contacts access allowed or disabled, no matter what. Just click the main circle button and scroll up through apps list.

Stack trace

FATAL EXCEPTION: main Process: fr.neamar.kiss, PID: 4113 java.lang.RuntimeException: Canvas: trying to draw too large(112741924bytes) bitmap. at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:266) at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:94) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:549) at android.widget.ImageView.onDraw(ImageView.java:1446) at android.view.View.draw(View.java:23195) at android.view.View.updateDisplayListIfDirty(View.java:22062) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.updateDisplayListIfDirty(View.java:22053) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.updateDisplayListIfDirty(View.java:22053) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.widget.ListView.drawChild(ListView.java:3613) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.widget.AbsListView.dispatchDraw(AbsListView.java:2699) at android.widget.ListView.dispatchDraw(ListView.java:3608) at android.view.View.draw(View.java:23198) at android.widget.AbsListView.draw(AbsListView.java:4453) at android.view.View.updateDisplayListIfDirty(View.java:22062) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23198) at android.view.View.updateDisplayListIfDirty(View.java:22062) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.updateDisplayListIfDirty(View.java:22053) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.updateDisplayListIfDirty(View.java:22053) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.updateDisplayListIfDirty(View.java:22053) at android.view.View.draw(View.java:22926) at android.view.ViewGroup.drawChild(ViewGroup.java:4529) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4290) at android.view.View.draw(View.java:23198) at com.android.internal.policy.DecorView.draw(DecorView.java:819) at android.view.View.updateDisplayListIfDirty(View.java:22062) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:682) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:688) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:786) at android.view.ViewRootImpl.draw(ViewRootImpl.java:4579) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4290) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3517) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2286) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8948) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239) at android.view.Choreographer.doCallbacks(Choreographer.java:899) at android.view.Choreographer.doFrame(Choreographer.java:832) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7898) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

TBog commented 1 year ago

Are you using an Icon Pack?

It seems that the dimensions for the icons when set are too big. Could you also provide us with the info on the phone you are using?

Also please provide the Android version, it would help with trying to replicate your issue.

ghost commented 1 year ago

No icon pack. Model: Pixel4a with CalyxOS 4.3.2 (AOSP based - Android 13).

ghost commented 1 year ago

Ok so a user side workaround is to disable "force icon background" in KISS settings.

Regarding the bug itself, I can eventually provide more information about icons max size/resolution but don't know if it's relevant.

For those reading this and who are still under 3.16.10, change the mentioned setting before updating ;)

ghost commented 1 year ago

The issue seems related to #1838 and #2003 occurring when KiSS is trying to draw the background for some large icon/contact image files.