TSLib fixes. Add fullscreen support to ephyr
This commit is contained in:
parent
545c082cf9
commit
92b3775ae8
|
@ -355,7 +355,8 @@ ephyrRandRGetInfo (ScreenPtr pScreen, Rotation *rotations)
|
|||
|
||||
*rotations = RR_Rotate_All|RR_Reflect_All;
|
||||
|
||||
if (!hostx_want_preexisting_window()) /* only if no -parent switch */
|
||||
if (!hostx_want_preexisting_window()
|
||||
&& !hostx_want_fullscreen()) /* only if no -parent switch */
|
||||
{
|
||||
while (sizes[n].width != 0 && sizes[n].height != 0)
|
||||
{
|
||||
|
|
|
@ -61,6 +61,7 @@ ddxUseMsg (void)
|
|||
ErrorF("\nXephyr Option Usage:\n");
|
||||
ErrorF("-parent XID Use existing window as Xephyr root win\n");
|
||||
ErrorF("-host-cursor Re-use exisiting X host server cursor\n");
|
||||
ErrorF("-fullscreen Attempt to run Xephyr fullscreen\n");
|
||||
ErrorF("\n");
|
||||
|
||||
exit(1);
|
||||
|
@ -87,6 +88,11 @@ ddxProcessArgument (int argc, char **argv, int i)
|
|||
hostx_use_host_cursor();
|
||||
return 1;
|
||||
}
|
||||
else if (!strcmp (argv[i], "-fullscreen"))
|
||||
{
|
||||
hostx_use_fullscreen();
|
||||
return 1;
|
||||
}
|
||||
else if (argv[i][0] == ':')
|
||||
{
|
||||
hostx_set_display_name(argv[i]);
|
||||
|
|
|
@ -61,7 +61,9 @@ struct EphyrHostXVars
|
|||
XImage *ximg;
|
||||
int win_width, win_height;
|
||||
Bool use_host_cursor;
|
||||
Bool use_fullscreen;
|
||||
Bool have_shm;
|
||||
|
||||
long damage_debug_msec;
|
||||
|
||||
unsigned char *fb_data; /* only used when host bpp != server bpp */
|
||||
|
@ -71,7 +73,7 @@ struct EphyrHostXVars
|
|||
};
|
||||
|
||||
/* memset ( missing> ) instead of below */
|
||||
static EphyrHostXVars HostX = { "?", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
static EphyrHostXVars HostX = { "?", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
|
||||
static int HostXWantDamageDebug = 0;
|
||||
|
||||
|
@ -85,6 +87,9 @@ extern int kdMaxKeyCode;
|
|||
extern int kdKeymapWidth;
|
||||
extern int monitorResolution;
|
||||
|
||||
static void
|
||||
hostx_set_fullscreen_hint(void);
|
||||
|
||||
/* X Error traps */
|
||||
|
||||
static int trapped_error_code = 0;
|
||||
|
@ -118,7 +123,8 @@ hostx_errors_untrap(void)
|
|||
int
|
||||
hostx_want_screen_size(int *width, int *height)
|
||||
{
|
||||
if (HostX.win_pre_existing != None)
|
||||
if (HostX.win_pre_existing != None
|
||||
|| HostX.use_fullscreen == True)
|
||||
{
|
||||
*width = HostX.win_width;
|
||||
*height = HostX.win_height;
|
||||
|
@ -167,6 +173,34 @@ hostx_want_preexisting_window(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
hostx_use_fullscreen(void)
|
||||
{
|
||||
HostX.use_fullscreen = True;
|
||||
}
|
||||
|
||||
int
|
||||
hostx_want_fullscreen(void)
|
||||
{
|
||||
return HostX.use_fullscreen;
|
||||
}
|
||||
|
||||
static void
|
||||
hostx_set_fullscreen_hint(void)
|
||||
{
|
||||
Atom atom_WINDOW_STATE, atom_WINDOW_STATE_FULLSCREEN;
|
||||
|
||||
atom_WINDOW_STATE
|
||||
= XInternAtom(HostX.dpy, "_NET_WM_STATE", False);
|
||||
atom_WINDOW_STATE_FULLSCREEN
|
||||
= XInternAtom(HostX.dpy, "_NET_WM_STATE_FULLSCREEN",False);
|
||||
|
||||
XChangeProperty(HostX.dpy, HostX.win,
|
||||
atom_WINDOW_STATE, XA_ATOM, 32,
|
||||
PropModeReplace,
|
||||
(unsigned char *)&atom_WINDOW_STATE_FULLSCREEN, 1);
|
||||
}
|
||||
|
||||
void
|
||||
hostx_use_preexisting_window(unsigned long win_id)
|
||||
{
|
||||
|
@ -264,6 +298,14 @@ hostx_init(void)
|
|||
&attr);
|
||||
|
||||
hostx_set_win_title("( ctrl+shift grabs mouse and keyboard )");
|
||||
|
||||
if (HostX.use_fullscreen)
|
||||
{
|
||||
HostX.win_width = DisplayWidth(HostX.dpy, HostX.screen);
|
||||
HostX.win_height = DisplayHeight(HostX.dpy, HostX.screen);
|
||||
|
||||
hostx_set_fullscreen_hint();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -88,6 +88,12 @@ hostx_want_host_cursor(void);
|
|||
void
|
||||
hostx_use_host_cursor(void);
|
||||
|
||||
void
|
||||
hostx_use_fullscreen(void);
|
||||
|
||||
int
|
||||
hostx_want_fullscreen(void);
|
||||
|
||||
int
|
||||
hostx_want_preexisting_window(void);
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ InitInput (int argc, char **argv)
|
|||
{
|
||||
KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
|
||||
#ifdef TOUCHSCREEN
|
||||
KdInitTouchScreen (&TsFuncs);
|
||||
KdAddMouseDriver (&TsFuncs);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -171,6 +171,8 @@ TslibInit (void)
|
|||
if (!TsInputType)
|
||||
TsInputType = KdAllocInputType ();
|
||||
|
||||
KdMouseInfoAdd(); /* allocate empty kdMouseInfo entry for ts */
|
||||
|
||||
for (mi = kdMouseInfo; mi; mi = next)
|
||||
{
|
||||
next = mi->next;
|
||||
|
|
Loading…
Reference in New Issue
Block a user