public void surfaceDestroyed(SurfaceHolder holder) {
    Log.d("ssidang", "surfaceDestroyed()");

    // 렌더링 스레드를 죽입니다.
    renderThread.shutdown();
    this.renderThread = null;
  }
예제 #2
0
  @Override // runs on RenderThread
  public void handleMessage(Message msg) {
    int what = msg.what;
    // Log.d(TAG, "RenderHandler [" + this + "]: what=" + what);

    RenderThread renderThread = mWeakRenderThread.get();
    if (renderThread == null) {
      Log.w(TAG, "RenderHandler.handleMessage: weak ref is null");
      return;
    }

    switch (what) {
      case MSG_SURFACE_CREATED:
        renderThread.surfaceCreated();
        break;
      case MSG_SURFACE_CHANGED:
        renderThread.surfaceChanged(msg.arg1, msg.arg2);
        break;
      case MSG_DO_FRAME:
        long timestamp = (((long) msg.arg1) << 32) | (((long) msg.arg2) & 0xffffffffL);
        renderThread.doFrame(timestamp);
        break;
      case MSG_SHUTDOWN:
        renderThread.shutdown();
        break;
      default:
        throw new RuntimeException("unknown message " + what);
    }
  }