xserver/hw/kdrive/fbdev/fbdev.h
stefan11111 42204fff0c kdrive/{fbdev,modesetting}: Don't constrain the cursor position unnecessarily
We don't tell RandR about the initial rotation, so it thinks that it needs to
constrains the cursor position to the intersection of the rotated screen and unrotated screen

Wrap `pScreen->ConstrainCursorHarder` and return early when we are initially rotated.

We could instead just tell RandR about out initial rotation and assign new rotations directly
in RRSetConfig.

For now do it like this, revisit later if needed/desired.

Signed-off-by: stefan11111 <stefan11111github@gmail.com>
2026-10-12 13:22:59 +02:00

103 lines
2.8 KiB
C

/*
* Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _KDRIVE_FBDEV_H_
#define _KDRIVE_FBDEV_H_
#include <stdbool.h>
#include <stdio.h>
#include <linux/fb.h>
#include <unistd.h>
#include <sys/mman.h>
#include "kglamor.h"
#include "include/randrstr.h"
typedef struct _fbdevPriv {
struct fb_var_screeninfo saved_var;
struct fb_var_screeninfo var;
struct fb_fix_screeninfo fix;
__u16 red[256];
__u16 green[256];
__u16 blue[256];
int fd;
char *fb;
char *fb_base;
} FbdevPriv;
typedef struct _fbdevScrPriv {
Rotation randr;
Bool shadow;
int max_width;
int max_height;
ConstrainCursorHarderProcPtr ConstrainCursorHarder;
} FbdevScrPriv;
typedef struct _fbScreenConf {
const char *fb_path;
Bool shadow;
KdGlamorInfo glamor_info;
} FbScreenConf;
extern KdCardFuncs fbdevFuncs;
Bool fbdevCardInit(KdCardInfo * card);
Bool fbdevScreenInit(KdScreenInfo * screen);
Bool fbdevInitScreen(ScreenPtr pScreen);
Bool fbdevFinishInitScreen(ScreenPtr pScreen);
Bool fbdevCreateResources(ScreenPtr pScreen);
void fbdevPreserve(KdCardInfo * card);
Bool fbdevEnable(ScreenPtr pScreen);
Bool fbdevDPMS(ScreenPtr pScreen, int mode);
void fbdevDisable(ScreenPtr pScreen);
void fbdevRestore(KdCardInfo * card);
void fbdevScreenFini(KdScreenInfo * screen);
void fbdevCardFini(KdCardInfo * card);
void fbdevGetColors(ScreenPtr pScreen, int n, xColorItem * pdefs);
void fbdevPutColors(ScreenPtr pScreen, int n, xColorItem * pdefs);
Bool fbdevMapFramebuffer(KdScreenInfo * screen);
#ifdef GLAMOR
Bool fbdevInitAccel(ScreenPtr screen);
void fbdevEnableAccel(ScreenPtr screen);
void fbdevDisableAccel(ScreenPtr screen);
void fbdevFiniAccel(ScreenPtr screen);
#endif
#endif /* _KDRIVE_FBDEV_H_ */