2006-11-26 11:13:41 -07:00
|
|
|
/*
|
|
|
|
|
|
|
|
Copyright 1993 by Davor Matic
|
|
|
|
|
|
|
|
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. Davor Matic makes no representations about
|
|
|
|
the suitability of this software for any purpose. It is provided "as
|
|
|
|
is" without express or implied warranty.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_XNEST_CONFIG_H
|
|
|
|
#include <xnest-config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <X11/X.h>
|
|
|
|
#include <X11/Xproto.h>
|
|
|
|
#include "screenint.h"
|
|
|
|
#include "input.h"
|
|
|
|
#include "misc.h"
|
|
|
|
#include "scrnintstr.h"
|
|
|
|
#include "windowstr.h"
|
|
|
|
#include "servermd.h"
|
|
|
|
#include "mi.h"
|
|
|
|
#include <X11/fonts/fontstruct.h>
|
2017-12-08 08:01:59 -07:00
|
|
|
#include "dixfontstr.h"
|
2006-11-26 11:13:41 -07:00
|
|
|
|
|
|
|
#include "Xnest.h"
|
|
|
|
|
|
|
|
#include "Display.h"
|
|
|
|
#include "Screen.h"
|
|
|
|
#include "Pointer.h"
|
|
|
|
#include "Keyboard.h"
|
|
|
|
#include "Handlers.h"
|
2017-12-08 08:01:59 -07:00
|
|
|
#include "Events.h"
|
2006-11-26 11:13:41 -07:00
|
|
|
#include "Init.h"
|
|
|
|
#include "Args.h"
|
|
|
|
#include "Drawable.h"
|
|
|
|
#include "XNGC.h"
|
|
|
|
#include "XNFont.h"
|
|
|
|
#ifdef DPMSExtension
|
|
|
|
#include "dpmsproc.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
Bool xnestDoFullGeneration = True;
|
|
|
|
|
2019-07-27 01:57:06 -06:00
|
|
|
#ifdef GLXEXT
|
|
|
|
void
|
|
|
|
GlxExtensionInit(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2006-11-26 11:13:41 -07:00
|
|
|
void
|
2014-09-27 11:52:59 -06:00
|
|
|
InitOutput(ScreenInfo * screen_info, int argc, char *argv[])
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
2012-06-10 07:21:05 -06:00
|
|
|
int i, j;
|
|
|
|
|
|
|
|
xnestOpenDisplay(argc, argv);
|
|
|
|
|
2014-09-27 11:52:59 -06:00
|
|
|
screen_info->imageByteOrder = ImageByteOrder(xnestDisplay);
|
|
|
|
screen_info->bitmapScanlineUnit = BitmapUnit(xnestDisplay);
|
|
|
|
screen_info->bitmapScanlinePad = BitmapPad(xnestDisplay);
|
|
|
|
screen_info->bitmapBitOrder = BitmapBitOrder(xnestDisplay);
|
2012-06-10 07:21:05 -06:00
|
|
|
|
2014-09-27 11:52:59 -06:00
|
|
|
screen_info->numPixmapFormats = 0;
|
2012-06-10 07:21:05 -06:00
|
|
|
for (i = 0; i < xnestNumPixmapFormats; i++)
|
|
|
|
for (j = 0; j < xnestNumDepths; j++)
|
|
|
|
if ((xnestPixmapFormats[i].depth == 1) ||
|
|
|
|
(xnestPixmapFormats[i].depth == xnestDepths[j])) {
|
2014-09-27 11:52:59 -06:00
|
|
|
screen_info->formats[screen_info->numPixmapFormats].depth =
|
2012-06-10 07:21:05 -06:00
|
|
|
xnestPixmapFormats[i].depth;
|
2014-09-27 11:52:59 -06:00
|
|
|
screen_info->formats[screen_info->numPixmapFormats].bitsPerPixel =
|
2012-06-10 07:21:05 -06:00
|
|
|
xnestPixmapFormats[i].bits_per_pixel;
|
2014-09-27 11:52:59 -06:00
|
|
|
screen_info->formats[screen_info->numPixmapFormats].scanlinePad =
|
2012-06-10 07:21:05 -06:00
|
|
|
xnestPixmapFormats[i].scanline_pad;
|
2014-09-27 11:52:59 -06:00
|
|
|
screen_info->numPixmapFormats++;
|
2012-06-10 07:21:05 -06:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2017-12-08 08:01:59 -07:00
|
|
|
xnestFontPrivateIndex = xfont2_allocate_font_private_index();
|
2012-06-10 07:21:05 -06:00
|
|
|
|
|
|
|
if (!xnestNumScreens)
|
|
|
|
xnestNumScreens = 1;
|
|
|
|
|
|
|
|
for (i = 0; i < xnestNumScreens; i++)
|
|
|
|
AddScreen(xnestOpenScreen, argc, argv);
|
|
|
|
|
2014-09-27 11:52:59 -06:00
|
|
|
xnestNumScreens = screen_info->numScreens;
|
2012-06-10 07:21:05 -06:00
|
|
|
|
|
|
|
xnestDoFullGeneration = xnestFullGeneration;
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
|
|
|
|
2017-12-08 08:01:59 -07:00
|
|
|
static void
|
|
|
|
xnestNotifyConnection(int fd, int ready, void *data)
|
|
|
|
{
|
|
|
|
xnestCollectEvents();
|
|
|
|
}
|
|
|
|
|
2006-11-26 11:13:41 -07:00
|
|
|
void
|
|
|
|
InitInput(int argc, char *argv[])
|
|
|
|
{
|
2012-06-10 07:21:05 -06:00
|
|
|
int rc;
|
|
|
|
|
|
|
|
rc = AllocDevicePair(serverClient, "Xnest",
|
|
|
|
&xnestPointerDevice,
|
|
|
|
&xnestKeyboardDevice,
|
|
|
|
xnestPointerProc, xnestKeyboardProc, FALSE);
|
2006-11-26 11:13:41 -07:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
if (rc != Success)
|
|
|
|
FatalError("Failed to init Xnest default devices.\n");
|
2007-11-24 10:55:21 -07:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
mieqInit();
|
2006-11-26 11:13:41 -07:00
|
|
|
|
2017-12-08 08:01:59 -07:00
|
|
|
SetNotifyFd(XConnectionNumber(xnestDisplay), xnestNotifyConnection, X_NOTIFY_READ, NULL);
|
2006-11-26 11:13:41 -07:00
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
RegisterBlockAndWakeupHandlers(xnestBlockHandler, xnestWakeupHandler, NULL);
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
|
|
|
|
2010-07-27 13:02:24 -06:00
|
|
|
void
|
|
|
|
CloseInput(void)
|
|
|
|
{
|
2012-06-10 07:21:05 -06:00
|
|
|
mieqFini();
|
2010-07-27 13:02:24 -06:00
|
|
|
}
|
|
|
|
|
2006-11-26 11:13:41 -07:00
|
|
|
/*
|
|
|
|
* DDX - specific abort routine. Called by AbortServer().
|
|
|
|
*/
|
2012-06-10 07:21:05 -06:00
|
|
|
void
|
|
|
|
AbortDDX(enum ExitCode error)
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
2012-06-10 07:21:05 -06:00
|
|
|
xnestDoFullGeneration = True;
|
|
|
|
xnestCloseDisplay();
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Called by GiveUp(). */
|
2012-06-10 07:21:05 -06:00
|
|
|
void
|
|
|
|
ddxGiveUp(enum ExitCode error)
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
2012-06-10 07:21:05 -06:00
|
|
|
AbortDDX(error);
|
2006-11-26 11:13:41 -07:00
|
|
|
}
|
|
|
|
|
2008-11-02 08:26:08 -07:00
|
|
|
#ifdef __APPLE__
|
2006-11-26 11:13:41 -07:00
|
|
|
void
|
|
|
|
DarwinHandleGUI(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
void
|
|
|
|
OsVendorInit(void)
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2020-04-20 12:17:25 -06:00
|
|
|
#ifdef X_PRIVSEP
|
|
|
|
void
|
|
|
|
priv_vendor_init(void)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2012-06-10 07:21:05 -06:00
|
|
|
void
|
2013-06-07 11:28:45 -06:00
|
|
|
OsVendorFatalError(const char *f, va_list args)
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2010-07-27 13:02:24 -06:00
|
|
|
#if defined(DDXBEFORERESET)
|
2012-06-10 07:21:05 -06:00
|
|
|
void
|
|
|
|
ddxBeforeReset(void)
|
2006-11-26 11:13:41 -07:00
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
2010-07-27 13:02:24 -06:00
|
|
|
#endif
|
2020-01-26 06:48:54 -07:00
|
|
|
|
|
|
|
#if INPUTTHREAD
|
|
|
|
/** This function is called in Xserver/os/inputthread.c when starting
|
|
|
|
the input thread. */
|
|
|
|
void
|
|
|
|
ddxInputThreadInit(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|