dequeueBuffer: ne peut pas mettre en queue plusieurs tampons sans définir le nombre de tampons

Je reçois l’erreur ci-dessous sur Android 4.4.2 Moto X 2013 dans une application WebView Rhomobile 5.0.2. L’application est compilée avec le SDK 19 et le niveau minAPI de 17.

Après quelques recherches, il semble que cela soit un problème avec les GPU Snapdragon 800 / Adreno:

https://code.google.com/p/android/issues/detail?id=63738 https://code.google.com/p/android/issues/detail?id=71742

La désactivation de l’accélération matérielle n’est pas vraiment une option, car cela rend WebView très lent.

Puisque l’erreur est:

dequeueBuffer: can't dequeue multiple buffers without setting the buffer count 

Comment définir le nombre de tampons dans com.rhomobile.rhodes.RhodesActivity?

 11-08 18:28:31.227: I/SFPerfTracer(238): sortingggers: (rate: 0:0) (423387 sw vsyncs) (0 skipped) (0:361861 vsyncs) (2:863582) 11-08 18:28:31.328: W/Adreno-EGLSUB(4749): : dequeue native buffer fail: Unknown error 2147483646, buffer=0x61213afc, handle=0x0 11-08 18:28:31.331: W/Adreno-EGLSUB(4749): : Invalid native buffer. Failed to queueBuffer 11-08 18:28:31.331: W/Adreno-EGLSUB(4749): : native buffer is NULL 11-08 18:28:31.346: E/BufferQueue(238): [com.myapp.myapp/com.rhomobile.rhodes.RhodesActivity] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count 11-08 18:28:31.346: W/Adreno-EGLSUB(4749): : dequeue native buffer fail: Invalid argument, buffer=0x61213afc, handle=0x0 11-08 18:28:31.347: W/Adreno-ES20(4749): : GL_OUT_OF_MEMORY 11-08 18:28:31.347: W/Adreno-EGL(4749): : EGL_BAD_SURFACE 11-08 18:28:31.347: W/HardwareRenderer(4749): EGL error: EGL_BAD_SURFACE 11-08 18:28:31.352: W/HardwareRenderer(4749): Mountain View, we've had a problem here. Switching back to software rendering. 11-08 18:28:31.478: D/qdgralloc(4749): Invalid gralloc handle (at 0x0): ver(-1/12) ints(-1/12) fds(-1/2) magic(????/gmsm) 11-08 18:28:31.478: W/GraphicBufferMapper(4749): lock(...) failed -22 (Invalid argument) 11-08 18:28:31.478: W/Surface(4749): failed locking buffer (handle = 0x0) 11-08 18:28:31.531: E/ViewRootImpl(4749): Could not lock surface 11-08 18:28:31.531: E/ViewRootImpl(4749): java.lang.IllegalArgumentException 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.Surface.nativeLockCanvas(Native Method) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.Surface.lockCanvas(Surface.java:243) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2466) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2440) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2284) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1914) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1024) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5796) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.Choreographer.doCallbacks(Choreographer.java:574) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.Choreographer.doFrame(Choreographer.java:544) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.os.Handler.handleCallback(Handler.java:733) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.os.Handler.dispatchMessage(Handler.java:95) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.os.Looper.loop(Looper.java:136) 11-08 18:28:31.531: E/ViewRootImpl(4749): at android.app.ActivityThread.main(ActivityThread.java:5102) 11-08 18:28:31.531: E/ViewRootImpl(4749): at java.lang.reflect.Method.invokeNative(Native Method) 11-08 18:28:31.531: E/ViewRootImpl(4749): at java.lang.reflect.Method.invoke(Method.java:515) 11-08 18:28:31.531: E/ViewRootImpl(4749): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 11-08 18:28:31.531: E/ViewRootImpl(4749): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 11-08 18:28:31.531: E/ViewRootImpl(4749): at dalvik.system.NativeStart.main(Native Method) 

Essayez d’activer Multidex. Ajoutez une dépendance dans votre module build.gradle:

 android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } } dependencies { comstack 'com.android.support:multidex:1.0.1' } 

En manifeste, ajoutez l’atsortingbut name à l’application

    ...