Обои с ошибкой - queueBuffer: буфер очереди ошибок для SurfaceTexture
Сбой в работе Live Wallpaper, код ниже
public void render(){
Canvas canvas = null;
try{
canvas = this._surfaceHolder.lockCanvas(null);
synchronized (this._surfaceHolder) {
this.onDraw(canvas);
}
}catch(Exception e){ Log.w("Surface holder ", e.toString());}
finally{
if(canvas != null){
this._surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
protected void onDraw(Canvas canvas) {
this.renderBackGround(canvas);
for (Renderable renderable : this._fishes) {
renderable.render(canvas);
}
};
Сбой при ошибке ниже
06-07 19: 49: 09.143: E/SurfaceTextureClient (13629): queueBuffer: буфер очереди ошибок для SurfaceTexture, -19
06-07 19: 49: 09.143: E/SurfaceTextureClient (13629):
queueBuffer (handle = 0x1c1b30) failed (Нет такого устройства)
06-07 19: 49: 09.143: W/dalvikvm (13629): threadid = 11: выход потока с неперехваченным исключением (группа = 0x40c671f8)
06-07 19: 49: 09.143: E/AndroidRuntime (13629):
FATAL EXCEPTION: Thread-692
06-07 19: 49: 09.143: E/AndroidRuntime (13629): java.lang.IllegalArgumentException
06-07 19: 49: 09.143: E/AndroidRuntime (13629): на android.view.Surface.unlockCanvasAndPost(собственный метод)
06-07 19: 49: 09.143: E/AndroidRuntime (13629): at com.android.internal.view.BaseSurfaceHolder.unlockCanvasAndPost(BaseSurfaceHolder.java:215)
заблаговременно
Ответы
Ответ 1
Обычно это происходит, когда вы вращаете устройство в режиме выбора живых обоев. Единственное решение, которое я нашел, - это захватить исключение IllegalArgumentException и игнорировать его.
if (canvas != null) {
try {
holder.unlockCanvasAndPost(canvas);
} catch (IllegalArgumentException e) {
// Ignore weird bug when rotating in live wallpaper picker
}
}