// synchronized public static void changeVideo(int newWidth, int newHeight) { // Log.d("Thread Video", "changeVideo"); synchronized (lock1) { for (int i = 0; i < 4; i++) Emulator.setPadData(i, 0); // if(emu_width!=newWidth || emu_height!=newHeight) // { emu_width = newWidth; emu_height = newHeight; emuBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.RGB_565); mtx.setScale( (float) (window_width / (float) emu_width), (float) (window_height / (float) emu_height)); if (videoRenderMode == PrefsHelper.PREF_RENDER_GL) { GLRenderer r = (GLRenderer) ((EmulatorViewGL) mm.getEmuView()).getRender(); if (r != null) r.changedEmulatedSize(); } mm.runOnUiThread( new Runnable() { public void run() { mm.getMainHelper().updateMAME4all(); } }); // } } }
// synchronized static void bitblt(ByteBuffer sScreenBuff, boolean inMAME) { if (paused) // locks are expensive { synchronized (lock2) { try { if (paused) lock2.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } synchronized (lock1) { // try { screenBuff = sScreenBuff; Emulator.inMAME = inMAME; if (videoRenderMode == PrefsHelper.PREF_RENDER_GL) { // if(mm.getEmuView() instanceof EmulatorViewGL) ((EmulatorViewGL) mm.getEmuView()).requestRender(); } else if (videoRenderMode == PrefsHelper.PREF_RENDER_THREADED) { videoT.update(); } else if (videoRenderMode == PrefsHelper.PREF_RENDER_HW) { // mm.getEmuView().setWillNotDraw(false); videoT.update(); } else { if (holder == null) return; Canvas canvas = holder.lockCanvas(); sScreenBuff.rewind(); emuBitmap.copyPixelsFromBuffer(sScreenBuff); i++; canvas.concat(mtx); canvas.drawBitmap(emuBitmap, 0, 0, emuPaint); // canvas.drawBitmap(emuBitmap, null, frameRect, emuPaint); if (isDebug) { canvas.drawText("Normal fps:" + fps + " " + inMAME, 5, 40, debugPaint); if (System.currentTimeMillis() - millis >= 1000) { fps = i; i = 0; millis = System.currentTimeMillis(); } } holder.unlockCanvasAndPost(canvas); } /* } catch (Throwable t) { Log.getStackTraceString(t); } */ } }