We can now launch GL or XV apps in any of the Xephyr screens we want. * hw/kdrive/ephyr/hostx.c,h: (hostx_get_window): (hostx_create_window): make these functions be screen number aware. * hw/kdrive/ephyr/XF86dri.c : fix some compiler warnings. * hw/kdrive/ephyr/ephyrdri.c: (ephyrDRIQueryDirectRenderingCapable), (ephyrDRIOpenConnection), (ephyrDRIAuthConnection), (ephyrDRICloseConnection), (ephyrDRIGetClientDriverName), (ephyrDRICreateContext), (ephyrDRIDestroyContext), (ephyrDRICreateDrawable), (ephyrDRIGetDrawableInfo), (ephyrDRIGetDeviceInfo): in all those functions, don't forward the screen number we receive - from the client - to the host X. We (Xephyr) are always targetting the same X display screen, which is the one Xephyr got launched against. So we enforce that in the code. * hw/kdrive/ephyr/ephyrdriext.c: (EphyrMirrorHostVisuals): make this duplicate the visuals of the host X default screen into a given Xephyr screen. This way we have a chance to update the visuals of all Xephyr screen to make them mirror those of the host X. (many other places): specify screen number where required by the api change in hostx.h. * hw/kdrive/ephyr/ephyrglxext.c: specify screen number where required by the api change in hostx.h * hw/kdrive/ephyr/ephyrhostglx.c: don't forward the screen number we receive - from the client - to the host X. We (Xephyr) are always targetting the same X display screen, which is the one Xephyr got launched against. So we enforce that in the code. * hw/kdrive/ephyr/ephyrhostvideo.c,h: take in account the screen number received from the client app. This is useful to know on which Xephyr screen we need to display video stuff. * hw/kdrive/ephyr/ephyrvideo.c: update this to reflect the API change in hw/kdrive/ephyr/ephyrhostvideo.h. (ephyrSetPortAttribute): when parameters are not valid - they exceed their validity range - send them to the host anyway and do not return an error to clients. Some host expose buggy validity range, so rejecting client for that is too harsh. |
||
---|---|---|
.. | ||
GL/internal | ||
Makefile.am | ||
README | ||
XF86dri.c | ||
ephyr.c | ||
ephyr.h | ||
ephyr_draw.c | ||
ephyrdri.c | ||
ephyrdri.h | ||
ephyrdriext.c | ||
ephyrdriext.h | ||
ephyrglxext.c | ||
ephyrglxext.h | ||
ephyrhostglx.c | ||
ephyrhostglx.h | ||
ephyrhostproxy.c | ||
ephyrhostproxy.h | ||
ephyrhostvideo.c | ||
ephyrhostvideo.h | ||
ephyrinit.c | ||
ephyrlog.h | ||
ephyrproxyext.c | ||
ephyrproxyext.h | ||
ephyrvideo.c | ||
hostx.c | ||
hostx.h | ||
os.c |
Xephyr README ============= What Is It ? ============ Xephyr is a a kdrive server that outputs to a window on a pre-existing 'host' X display. Think Xnest but with support for modern extensions like composite, damage and randr. Unlike Xnest which is an X proxy, i.e. limited to the capabilities of the host X server, Xephyr is a real X server which uses the host X server window as "framebuffer" via fast SHM XImages. It also has support for 'visually' debugging what the server is painting. How To Use ========== You probably want to run like; Xephyr :1 -ac -screen 800x600 & Then set DISPLAY=:1 and run whatever X apps you like. Use 'xrandr' to change to orientation/size. There is a '-parent' switch which works just like Xnests ( for use with things like matchbox-nest - http://matchbox.handhelds.org ). There is also a '-host-cursor' switch to set 'cursor acceleration' - The host's cursor is reused. This is only really there to aid debugging by avoiding server paints for the cursor. Performance improvement is negiable. Send a SIGUSR1 to the server ( eg kill -USR1 `pidof Xephyr` ) to toggle the debugging mode. In this mode red rectangles are painted to screen areas getting painted before painting the actual content. The delay between this can be altered by setting a XEPHYR_PAUSE env var to a value in micro seconds. Caveats ======= - Depth is limited to being the same as the host. *Update* As of 8/11/2004. Xephyr can now do 8bpp & 16bpp on 24bpp host. - Rotated displays are currently updated via full blits. This is slower than a normal oprientated display. Debug mode will therefor not be of much use rotated. - The '-host-cursor' cursor is static in its appearence. - The build gets a warning about 'nanosleep'. I think the various '-D' build flags are causing this. I havn't figured as yet how to work round it. It doesn't appear to break anything however. - Keyboard handling is basic but works. - Mouse button 5 probably wont work. Matthew Allum <mallum@o-hand.com> 2004