From 6915ff33125338630aac0f7246bf86d4b0f65451 Mon Sep 17 00:00:00 2001 From: stefan11111 Date: Sun, 6 Jul 2025 15:36:01 +0300 Subject: [PATCH] kdrive: add dpms code to KdSaveScreen In preparation for adding the Xfbdev X11 kdrive server Signed-off-by: stefan11111 --- hw/kdrive/src/kdrive.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c index 5a3b0ce3e..05cae02e6 100644 --- a/hw/kdrive/src/kdrive.c +++ b/hw/kdrive/src/kdrive.c @@ -693,7 +693,34 @@ Bool KdCloseScreen(ScreenPtr pScreen) Bool KdSaveScreen(ScreenPtr pScreen, int on) { - return FALSE; + KdScreenPriv(pScreen); + int dpmsState; + + if (!pScreenPriv->card->cfuncs->dpms) + return FALSE; + + dpmsState = pScreenPriv->dpmsState; + switch (on) { + case SCREEN_SAVER_OFF: + dpmsState = KD_DPMS_NORMAL; + break; + case SCREEN_SAVER_ON: + if (dpmsState == KD_DPMS_NORMAL) + dpmsState = KD_DPMS_NORMAL + 1; + break; + case SCREEN_SAVER_CYCLE: + if (dpmsState < KD_DPMS_MAX) + dpmsState++; + break; + case SCREEN_SAVER_FORCER: + break; + } + if (dpmsState != pScreenPriv->dpmsState) { + if (pScreenPriv->enabled) + (*pScreenPriv->card->cfuncs->dpms) (pScreen, dpmsState); + pScreenPriv->dpmsState = dpmsState; + } + return TRUE; } static Bool