Example #1
0
  // 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();
            }
          });
      // }
    }
  }
Example #2
0
  // 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);
      }
      */
    }
  }