Commit Graph

83 Commits

Author SHA1 Message Date
Dodji Seketeli c06fa924b4 XEPHYR: more GLX/DRI proxying work.
* hw/kdrive/ephyr/XF86dri.c: re format this correctly.
	  Make function decls honour the Ansi-C standard.
	* hw/kdrive/ephyr/ephyr.c: protect glx/dri related
	  extension initialisation with the XEPHYR_DRI
	  macro. Initialize the GLX ext hijacking
	  at startup.
	* hw/kdrive/ephyr/ephyrdri.c: add more logging to ease debugging
	* hw/kdrive/ephyr/ephyrdriext.c: ditto. reformat.
	* hw/kdrive/ephyr/ephyrglxext.c,h: add this extension to
	  proxy GLX requests to the host X. started to proxy those nedded to
	  make glxinfo work with fglrx. Not yet finished.
	* hw/kdrive/ephyr/ephyrhostglx.c,h: put here the actual
	  Xlib code used to hit the host X server because Xlib stuff cannot be
	  mixed with xserver internal code, otherwise compilation erros due to
	  type clashes happen. So no Xlib type should be exported by the
	  entrypoints defined here.
2007-10-02 16:55:15 +02:00
Dodji Seketeli 0b85451449 Implement ReputImage and StopVideo
* hw/kdrive/ephyr/ephyrhostvideo.c/h:
	  (ephyrHostXVStopVideo): add this entry point.
	* hw/kdrive/ephyr/ephyrvideo.c:
	  Basically add ReputImage and StopVideo implementations.
	  Now, when other windows obscur the video window, the reclipping
	  seems to be well handled using StopVideo and ReputImage.
	  To do this, I was obliged to save the frame in PutImage, so
	  that I could resend it un ReputImage.
2007-10-02 16:55:14 +02:00
Dodji Seketeli 810dc55866 Ephyr-Xv: add a new line to a log
* hw/kdrive/ephyr/ephyrvideo.c:
	  (ephyrQueryImageAttributes): add newline to log.
2007-10-02 16:55:14 +02:00
Dodji Seketeli 47e6dff89e Xephyr-Xv: fix a crash when host X support several ports
* hw/kdrive/ephyr/ephyrvideo.c:
	  (ephyrXVPrivQueryHostAdaptors): properly set
	  port private luke. This fixes a crash when
	  the host Xv supports multiple ports.
	  Make sure number of ports cannot be zero.
2007-10-02 16:55:14 +02:00
Dodji Seketeli a38ad562a6 make xephyr talk DRI protocol with hostX
* configure.ac,include/dix-config.h.in: define the XEPHYR_DRI macro.
	  define it when --enable-xephyr and --enable-dri are both turned on.
	* hw/kdrive/ephyr/XF86dri.c: copy this from mesa source to enable
	  Xephyr to talk DRI protocol the host X. In mesa, this is used by libGL.so to
	  talk DRI protocol with the server.
	* hw/kdrive/ephyr/ephyr.c: finally initialise the DRI extension
	  in the ephyrInitScreen() function.
	* hw/kdrive/ephyr/ephyrdri.c,ephyrdriext.c: safeguard the compilation
	  using the XEPHYR_DRI macro.
2007-10-02 16:55:14 +02:00
Dodji Seketeli e4239a4807 Initial dri forwarding big bricks.
* hw/kdrive/ephyr/ephyrdriext.c: added this to implement a DRI extension
	  into Xephyr. Normally the DRI extension is only present in the
	  xfree86 server, but I have ported it to Xephyr. The extension calls
	  functions that declared/defined in ephyrdri.h ephyrdri.c that
	  forwards the DRI calls to the host X. It does not work yet, as this
	  entry is just to put the big bricks in place.
	* hw/kdrive/ephyr/ephyrdri.c,h: declaration & definition of the
	  DRI client API that would hit the hostX server.
	* hw/kdrive/ephyr/GL/internal/dri_interface.h: added this, otherwise
	  inclusion of /usr/include/X11/dri/xf86dri.h won't compile
2007-10-02 16:55:14 +02:00
Dodji Seketeli e01d3dd98d Support clipping region in PutImage.
* hw/kdrive/ephyr/ephyrhostvideo.c,h:
	  (ephyrHostXVPutImage): make this support clipping region.
	  The clipping region is propagated to host using XSetClipRectangles.
	  This changes the API of ephyrHostXVPutImage.
	* hw/kdrive/ephyr/ephyrvideo.c:
	  (ephyrPutImage): propagate the clipping region to the new
	  ephyrHostXVPutImage() entry point.
2007-10-02 16:55:14 +02:00
Dodji Seketeli 39d3895469 make EphyrXVPriv be a singleton
* hw/kdrive/ephyr/ephyrvideo.c:
	  (ephyrInitVideo) make the EphyrXVPriv object be a
	   singleton instance, otherwise a new object is created at each
	   generation.
2007-10-02 16:55:14 +02:00
Dodji Seketeli 4ed083095a add [Get/Put]Video and [Get/Put]Still support
* hw/kdrive/ephyr/ephyrhostvideo.c,h:
	  (ephyrHostXVAdaptorHasXXX): fix these.
	  (ephyrHostXVAdaptorHasGetVideo): added this
	  (ephyrHostXVAdaptorHasGetStill): ditto
	  (ephyrHostXVPutVideo): added this
	  (ephyrHostXVGetVideo): ditto
	  (ephyrHostXVPutStill): ditto
	  (ephyrHostXVGetStill): ditto
	* hw/kdrive/ephyr/ephyrvideo.c:
	  (ephyrPutVideo): implement this
	  (ephyrGetVideo): ditto
	  (ephyrPutStill): ditto
	  (ephyrGetStill): ditto
	  (ephyrXVPrivSetAdaptorsHooks): advertise GetVideo and GetStill
	  when the host X supports it.
2007-10-02 16:55:14 +02:00
Dodji Seketeli 6f7961bc21 advertise only the hooks implemented by host X
* hw/kdrive/ephyr/ephyrhostvideo.c,h:
          (ephyrHostXVAdaptorHasPutVideo): detect if
          host X has the PutVideo call.
          (ephyrHostXVAdaptorHasPutStill): detect if
          host X has the PutStill call
          (ephyrHostXVAdaptorHasPutImage): detect if
          host X has the PutImage call
        * hw/kdrive/ephyr/ephyrvideo.c:
          (ephyrXVPrivQueryHostAdaptors): make sure to create
          atoms for attribute names otherwise subsequent
          calls to get/set attribute from clients won't work.
          (ephyrXVPrivSetAdaptorsHooks): don't hardwire advertising
          of the PutImage call. Instead, advertise the calls advertised
          by the host.
2007-10-02 16:55:14 +02:00
Dodji Seketeli 1de89239bd don't crash when hostX reports an error.
* hw/kdrive/ephyr/ephyrhostvideo.c,h:
          (ephyrHostXVLogXErrorEvent): add this to
          log X error events. Heavily copied from libx11
          (ephyrHostXVErrorHandler): new x error handler that
          logs the error but does not exits.
          (ephyrHostXVInit): add this to be called at the beginning
          of xvideo lifetime. It sets an xerror handler that does not
          exit.
        * hw/kdrive/ephyr/ephyrvideo.c:
          (ephyrXVPrivIsAttrValueValid): this validates an attribute
          value.
          (ephyrSetPortAttribute): before setting an attribute,
          validate the new value so that we don't send a buggy
          request to host X.
        * hw/kdrive/ephyr/*.c: fix case in ephyrvideo code.
        * hw/kdrive/ephyr/ephyr.c: fix a typo
2007-10-02 16:55:13 +02:00
Dodji Seketeli 207714b60d first implementation of putimage
* hw/kdrive/ephyr/ephyrhostvideo.c,h:
          (EphyrHostXVPutImage): first implementation. does not
          support clipping regions yet.
        * hw/kdrive/ephyr/ephyrvideo.c:
          (DoSimpleClip): clip using a clipping box. Does not
           support regions yet.
          (EphyrPutImage): first implementation.
           Uses a simple clipping rectangle, no region yet.
        * hw/kdrive/ephyr/hostx.c:
          (hostx_get_window): added this to get the main
          window of the host x.
2007-10-02 16:55:13 +02:00
Dodji Seketeli aa478e09e2 make properties setting/query code work and hopefully complete.
* hw/kdrive/ephyr/ephyrhostvideo.c,h:
         (EphyrHostXVQueryImageAttributes): add this call. It calls
         XvQueryBestSize xserver entry point. It uses the protocol
         level machinery because Xvlib does not expose that entry point
         as a C function.
         (EphyrHostXVQueryBestSize): added this wrapper around XvQueryBestSize().
         (EphyrHostGetAtom, EphyrHostGetAtomName): added this to get
          an atom or atom name from the host server
        * hw/kdrive/ephyr/ephyrvideo.c:
          (EphyrSetPortAttribute): convert the atom into an host server
          server atom before attacking the host server with it, because in
          in its current form, the input atom is only valid in xephyr.
          This fix makes this call work.
          (EphyrGetPortAttribute): ditto.
          (EphyrQueryBestSize): implement this.
          (EphyrQueryImageAttributes): implement this.
2007-10-02 16:55:13 +02:00
Dodji Seketeli 24c837c0be implement setportattribute and getportattribute calls 2007-10-02 16:55:13 +02:00
Dodji Seketeli b8cd313be4 make xvinfo work
* hw/kdrive/ephyr/ephyrhostvideo.c:
          (EphyrHostXVAdaptorGetVideoFormats): properly get visual class instead of
            returning the visual id.
          (EphyrHostXVQueryEncodings): properly copy the fields because simple casting does
            truncate some fields.
           (EphyrHostAttributesDelete): XFree the whole array instead of trying to free invidial members.
        * hw/kdrive/ephyr/ephyrvideo.c:
          (ephyrInitVideo): fix a typo
          (EphyrXVPrivQueryHostAdaptors): set XvWindowMask mask to adaptors type.
           use host adaptor name. Don't forget to set nImages field.
          (EphyrXVPrivRegisterAdaptors): report an error when KdXVScreenInit() fails.
2007-10-02 16:55:13 +02:00
Dodji Seketeli aa2fae7b75 misc fixes.
*(EphyrHostXVQueryAdaptors): return the queried adaptors list
        * (EphyrHostXVQueryPortAttributes): return port attributes number
2007-10-02 16:55:13 +02:00
Dodji Seketeli 2bf7f3c223 link and init xv 2007-10-02 16:55:13 +02:00
Dodji Seketeli 66b28532e5 initial commit of xv support work 2007-10-02 16:55:13 +02:00
Dodji Seketeli 1e8f8b36a5 works with no adaptors
Debug the early code to make work when the host has no video adaptors
2007-10-02 16:55:13 +02:00
Dodji Seketeli 50ff2377ca add -verbosity <level> option to command line 2007-10-02 16:55:13 +02:00
Dodji Seketeli 8426eb2433 link and init xv 2007-10-02 16:55:13 +02:00
Dodji Seketeli 50a64c84e1 initial commit of xv support work 2007-10-02 16:45:01 +02:00
Andrew Christan e5e6514ffa Xephyr: add "multiscreen" suport
* This patch adds multiscreen support to Xephyr. For instance,
	  the command line : "Xephyr :4 -ac -screen 320x240 -screen 640x480"
	  will launch with two "screens" - namely two main windows.
	  The first main window represents a screen that has the number :4.0, with
	  a geometry of 320x240 pixels, and the second one represents a screen
	  that has the number :4.1 with a geometry of 640x480.
	  The command line: "DISPLAY=:4.1 xclock" will launch the xclock program
	  on the second screen, for intance.

	*   this patch was edited by Dodji Seketeli <dodji@openedhand.com> for:
	  - better style compliance with the rest of the Xephyr code
	  - make sure Xephyr could be launched with no -screen option. By
	    default that creates a default screen of 640x480 pixel like before
	  - display full titles on the windows - with insctructions to grab
	    keyboard and mouse - like before.
2007-10-02 13:49:17 +02:00
Dodji Seketeli aa0325db7e Xephyr: fix compiler warnings
* hw/kdrive/ephyr/ephyr_draw.c:
	  (ephyrDownloadFromScreen),
	  (ephyrUploadToScreen): fix compiler warnings
2007-09-26 15:26:42 +02:00
Dodji Seketeli e8c73ac697 Xephyr: fix compilation breakage.
* hw/kdrive/ephyr/ephyr_draw.c:
          (exaDDXDriverInit): pExaScr->hideOffscreenPixmapData does not exist
          anymore, so don't set it.
2007-09-11 00:20:45 +02:00
Alan Coopersmith c5741438a3 Only use evdev drivers in Xephyr #ifdef linux 2007-08-10 16:13:55 -07:00
Tiago Vignatti ab3f601149 Updates some piece of the dead mouse evdev code under the new hotplug scheme.
I exported the evdev driver to Xephyr server. I'm running it using something
like:
    $ ./hw/kdrive/ephyr/Xephyr :1 -mouse evdev,,device=/dev/input/event4 -keybd \
    evdev,,device=/dev/input/event1,xkbmodel=abnt2,xkblayout=br

It also closes /#5668.
2007-08-07 23:17:32 -03:00
Tiago Vignatti 955d5f6c0d When we call Xephyr with '-pointer' a new pointer is added inside the server
and the Xephyr virtual mouse keeps alive. With this patch the semantic changes
turning '-pointer' && 'Xephyr virtual mouse' always false.

Now we can open a device pointer and pass its options in Xephyr's command line
without having other pointer unused.
2007-08-07 01:39:29 -03:00
Tiago Vignatti 41b5155c8b For each kdrive server put a dependencie on its own libraries. 2007-07-05 01:57:41 -03:00
Tiago Vignatti 62f43d8b33 Relink properly all kdrive servers when changes happen. 2007-06-27 16:27:29 -03:00
Adam Jackson ae04f2cb0a Fix the 'relink' target for kdrive servers. 2007-04-26 15:28:04 -04:00
Eric Anholt e76b634951 Fix indentation of fakexa help text. 2007-03-27 16:47:07 -07:00
Daniel Stone 68d39d8571 kdrive/ephyr: fix keysym type confusion once and for all
Take keysyms in as an XID in hostx_load_keymap() and explicitly
convert them to CARD32 for loading into the server.  Fixes Xephyr on
AMD64, wa-hey.
2007-02-16 23:02:46 +02:00
Daniel Stone 0f6dd4aea6 kdrive/ephyr: free screen struct
Free screen->driver on screenFini, instead of just leaking it.
2007-02-15 16:14:57 +02:00
Alan Coopersmith 5dcad9e9d7 Fix bus error on startup in 64-bit Xephyr
hostx_get_visual_masks takes unsigned long * arguments, but was being
passed pointers to CARD32's.
2007-02-02 14:45:16 -08:00
Daniel Stone 738d2e8817 kdrive: move bell ringing into an OS function
Move the bell into an OS function, and use that if it's declared; else,
fall back to using the driver's function.
Remove the Linux keyboard bell function; just move it into the OS layer.
Use named initialisers when converting the old structures, and eliminate
unused functions.
2006-10-29 03:48:02 +03:00
Daniel Stone 5e9d33fe87 Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into input-hotplug 2006-09-07 15:43:31 +03:00
Matthew Allum 5ddbf4bcd4 Re-add support for tslib (1.0 release) and Xcalibrate extension. 2006-08-29 22:07:15 +01:00
Daniel Stone 393dc0a338 kdrive: remove @KDRIVE_LIBS@ from Xfoo_DEPENDENCIES 2006-08-29 22:53:54 +03:00
Daniel Stone 4be9abb850 kdrive: remove ddx_DEPENDENCIES
Remove foo_DEPENDENCIES as they weren't guaranteed to just be libs,
and loader arguments (-lfoo, -Lfoo) might've crept in.
2006-08-09 07:20:16 +03:00
Daniel Stone bedc4ecf23 xephyr: aid input debugging
Add the 'ephyr' mouse and keyboard drivers to the driver list so we can
re-add devices.
Set the names properly in Ephyr{Keyboard,Mouse}Init, not in InitInput.
2006-08-07 23:00:45 +03:00
Daniel Stone ccb53340b6 ephyr: cleanup
Remove extraneous KdAddPointerDriver call.
2006-08-07 21:12:00 +03:00
Daniel Stone c85e64cba1 Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into input-hotplug 2006-08-07 15:54:55 +03:00
Matthew Allum 39169fd373 Back out 'mystery' spurious host window hints. 2006-08-01 13:39:22 +01:00
Daniel Stone 1d31ed7782 xephyr: load keysyms at init, not enable
Load keysyms at init time, not enable, so we don't get the wrong map width.
2006-07-21 19:02:52 -04:00
Daniel Stone 7711c56d2e xephyr: fix keymap, pointer; dix: fix multiple axes
Initialise our axes properly in the DIX, and make sure we don't
unnecessarily clip maxval when it's not set.
Fix keymap copying in Xephyr (to some degree: it's still broken),
and set nAxes and nButtons properly.
2006-07-21 15:19:54 -04:00
Daniel Stone 02d0910511 new KDrive input world order
Convert KDrive to GPE/GKE interface.
Add first-class drivers and enumerate every device separately through
Xi, instead of lamely attempting to aggregate them.
Add XKB support to the Linux keyboard driver.
Add 'thumb button' support to the tslib driver.
Rejig InitInput, so each DDX has to add a list of drivers it supports.
Support NewInputDeviceRequest, et al.
2006-07-21 15:19:51 -04:00
Matthew Allum 90a9b82272 Fix crash in Xephyr when running on host X with keymap width < 4 ( i.e xvnc ) 2006-07-08 21:57:07 +01:00
Matthew Allum e805621894 Add support to Xephyr for simulating 8bit grayscale. 2006-07-08 21:10:58 +01:00
Eric Anholt 3d4ca57b69 Add a helper for the Component Alpha Over case, which breaks the operation
down into an OutReverse and an Add. Turn off the fallback to software
    glyphs when component alpha, now that we expect all (new) drivers to be
    able to support it. Also, make Xephyr fall back in the CA Over case to
    exercise this code. This speeds up my rgb24text and ls -lR in
    gnome-terminal by a factor of 5.
2006-04-26 18:27:40 +00:00