xf86-video-omapfb: pandora: handle cycle/forcer events better
[openembedded.git] / recipes / xorg-driver / xf86-video-omapfb / pandora_backlight_dim.patch
index f722682..4a0b843 100644 (file)
@@ -1,18 +1,39 @@
 diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c
-index 7a57221..fa97724 100644
+index 7a57221..62f5ccb 100644
 --- a/src/omapfb-driver.c
 +++ b/src/omapfb-driver.c
-@@ -788,7 +788,13 @@ OMAPFBLeaveVT(int scrnIndex, int flags)
+@@ -788,7 +788,34 @@ OMAPFBLeaveVT(int scrnIndex, int flags)
  static Bool
  OMAPFBSaveScreen(ScreenPtr pScreen, int mode)
  {
 -      xf86Msg(X_NOT_IMPLEMENTED, "%s: Dim backlight?\n", __FUNCTION__);
 +      /* call Pandora specific script */
++      static int blanking;
 +      char cmd[256];
++      int arg;
 +
-+      snprintf(cmd, sizeof(cmd), "/usr/pandora/scripts/op_lid.sh %d",
-+               (mode == SCREEN_SAVER_ON || mode == SCREEN_SAVER_CYCLE) ? 1 : 0);
++      switch (mode) {
++              case SCREEN_SAVER_CYCLE:
++                      if (blanking)
++                              return TRUE;
++                      /* fallthrough */
++              case SCREEN_SAVER_ON:
++                      arg = 1;
++                      break;
++
++              default:
++              case SCREEN_SAVER_FORCER:
++                      if (!blanking)
++                              return TRUE;
++                      /* fallthrough */
++              case SCREEN_SAVER_OFF:
++                      arg = 0;
++                      break;
++      }
++
++      snprintf(cmd, sizeof(cmd), "/usr/pandora/scripts/op_lid.sh %d", arg);
 +      system(cmd);
++      blanking = arg;
 +
        return TRUE;
  }