@Override
 public void onDestroy() {
   mRendererEngine.onSurfaceDestroyed();
   setTouchEventsEnabled(false);
   mSurfaceView.onDestroy();
   super.onDestroy();
   mRendererEngine = null;
 }
 @Override
 public void onOffsetsChanged(
     float xOffset,
     float yOffset,
     float xOffsetStep,
     float yOffsetStep,
     int xPixelOffset,
     int yPixelOffset) {
   mRendererEngine.onOffsetsChanged(
       xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);
 }
    @Override
    public void onVisibilityChanged(boolean visible) {

      super.onVisibilityChanged(visible);

      if (mRendererHasBeenSet) {

        if (visible) {
          mRendererEngine.onResume();
          mSurfaceView.onResume();
        } else {
          mRendererEngine.onPause();
          mSurfaceView.onPause();
        }

        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        if (mIsScreenOn != (mIsScreenOn = powerManager.isScreenOn())) {
          mRendererEngine.onScreenOnOffToggled(mIsScreenOn);
        }
      }
    }
 protected void setRenderer(WallpaperRenderer renderer) {
   mRendererEngine = renderer;
   mRendererEngine.setIsPreview(isPreview());
   mSurfaceView.setRenderer((GLSurfaceView.Renderer) mRendererEngine);
   mRendererHasBeenSet = true;
 }
 public void onTouchEvent(MotionEvent event) {
   mRendererEngine.onTouch(null, event);
 }