README by Mike Gorchak <mike@malva.ua>, <lestat@i.com.ua>
Last changed at 14 Feb 2004.

======================================================================
Table of Contents:

1. OpenGL.
2. Wheel and multi-button mouses.
3. CDROM handling issues.
4. Hardware video overlays.
5. Shared library building.
6. Some building issues.
7. Environment variables.

======================================================================
1. OpenGL:

    OpenGL works well and is stable, but fullscreen mode has not  been
heavily tested yet.
    If you have QNX RtP version 6.1.0 or above you must  download  the
Photon3D runtime from http://developers.qnx.com or install it from the
public repository or the  public CD, available  with  QNX. OS versions
below 6.1.0 are not supported.
    When creating an OpenGL context, software renderer mode is artifi-
cially selected (QSSL made acceleration  only  for  Voodoo  boards  in
fullscreen mode, sorry but I don't have this board  to  test  OpenGL -
maybe it works or maybe not :)). If you  want  acceleration - you  can
remove one line in the source code: find the  file SDL_ph_image.c  and
remove the following

    OGLAttrib[OGLargc++]=PHOGL_ATTRIB_FORCE_SW;
     
line in the ph_SetupOpenGLContext() function or change the argument to
PHOGL_ATTRIB_FORCE_HW or PHOGL_ATTRIB_FAVOR_HW.

======================================================================
2. Wheel and multi-button mouses:

    Photon emits  keyboard  events (key up and down)  when  the  mouse
wheel is moved. The key_scan field appears valid, and it contains zero.
That is a basic method of detecting  mouse  wheel events under Photon.
It looks like a hack, but it works for me :) on various PC  configura-
tions.

I've tested it on:

1. Genius Optical NetScroll/+ (1 wheel)
2. A4Tech Optical  GreatEye  WheelMouse,  model: WOP-35. (2 wheels + 2
   additional buttons). The wheel for vertical scrolling works as usu-
   al, but the second wheel for horizontal scrolling emits two sequen-
   tial events up or down, so it can provide faster scrolling than the
   first wheel. Additional buttons don't emit any events, but it looks
   like they're handled by photon in an unusual  way - like  click  to
   front, but works not with any window, looks like bug-o-feature :).

======================================================================
3. CDROM handling issues:

    Access to CDROM can only be  provided  with  'root'  privileges. I
can't do anything about that, /dev/cd0 has brw------- permissions  and
root:root rights.

======================================================================
4. Hardware video overlays:

    Overlays can flicker  during  window  movement,  resizing, etc. It
happens because the photon driver updates the real window contents be-
hind the overlay, then draws the temporary chroma key color  over  the
window contents. It can be done without using the chroma key but  that
causes the overlay to always be on top. So  flickering  during  window
movement is preferred instead.
    Double buffering code is temporarily disabled in the photon driver
code, because on my GF2-MX it can accidentally cause a buffer  switch,
which causes the old frame to show. S3 Savage4 has the  same  problem,
but ATI Rage 128 doesn't. I think it can be fixed later. Current  code
works very well, so maybe double buffering is not needed right now.
    Something strange happens when you try to move the window with the
overlay beyond the left border  of the screen. The  overlay  tries  to
stay at position x=0, but when attempting to move it  a  bit  more  it
jumps to position x=-60 (on GF2-MX, on ATI Rage128 this  value  a  bit
smaller). It's really strange, looks  like  the  overlay  doesn't like
negative coordinates.

=======================================================================
5. Shared library building:

    A shared library can be built, but before running  the  autogen.sh
script you must manually delete the libtool.m4 stuff from the acinclu-
de.m4 file (it comes after the ESD detection code up to the end of the
file), because the libtool stuff in the acinclude.m4 file was very old
in SDL distribution before the version 1.2.7 and doesn't knew anything
about QNX. SDL 1.2.7 distribution contain  the  new libtool.m4 script,
but anyway  it  is  broken :), Just  remove  it, then  run "libtoolize
--force --copy",  delete the file aclocal.m4 and after  that  run  the
autogen.sh script.

======================================================================
6. Some building issues:

    Feel free to not use the --disable-shared configure option if you'
ve read the above comment about 'Shared  library  building'. Otherwise
this  option  is  strongly  recommended, as  without it the sdl-config
script will be broken.

    Run the configure script without x11 support, e.g.:

    a) for OpenGL support:
    ./configure --prefix=/usr       \
                --disable-video-x11 \
                --disable-shared

    b) without OpenGL support:
    ./configure --prefix=/usr       \
                --disable-video-x11 \
                --disable-shared    \
                --disable-video-opengl

    In the test directory also run the ./configure script without
x11 support, e.g.:

    ./configure  --with-sdl-prefix=/usr            \
                 --with-sdl-exec-prefix=/usr       \
                 --prefix=/usr --without-x

======================================================================
7. Environment variables:

    Please note that the photon driver  is  sensible to the  following
environmental variables:

 * SDL_PHOTON_FULLSCREEN_REFRESH - this environment variable controls
the refresh rate in all fullscreen modes. Be carefull !!! Photon drivers
usually do not checking the maximum refresh rate, which video adapter or
monitor supports.

 * SDL_VIDEO_WINDOW_POS - can be  set in the "X,Y" format.  If X and Y
coordinates are bigger than the current desktop resolution, then  win-
dow positioning across  virtual  consoles is activated. If X and Y are
smaller than the desktop resolution  then  window  positioning  in the
current console is activated. The word "center" can be used instead of
coordinates, it  produces  the  same  behavior  as  SDL_VIDEO_CENTERED
environmental variable.

 * SDL_VIDEO_CENTERED - if this environmental variable exists then the
window centering is perfomed in the current virtual console.

    The SDL_VIDEO_CENTERED enviromental variable has greater  priority
than the SDL_VIDEO_WINDOW_POS in case if both variables  are  supplied
to the application.
