README.QNX by Mike Gorchak <mike@malva.ua>, <lestat@i.com.ua>
Last changed at 24 Apr 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 from the public CD, available with QNX. OS versi-
ons 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/+ PS/2 (1 wheel)
2. A4Tech Optical GreatEye WheelMouse PS/2,  model: WOP-35.  (2 wheels
   + 2 additional buttons). The wheel for vertical scrolling  works as
   usual, but the second wheel for horizontal scrolling emits  two se-
   quential 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 a fun bug-o-fe-
   ature :).

======================================================================
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 contains the  new libtool.m4 script,
but anyway  it  is  broken :), Just  remove  it, then  run "libtoolize
--force --copy",  delete the file aclocal.m4 if it is exists and after
that run the  autogen.sh script. SDL 1.2.8 contains  fixed libtool.m4,
ltmain.sh and config.sub files, so you  can  just  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

    And of course dont forget to specify --disable-debug, which  is on
by default, to disable debug and enable the expensive optimizations.

    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.

Notes: The SDL_VIDEO_CENTERED enviromental  variable  has greater pri-
ority than the SDL_VIDEO_WINDOW_POS in case if both variables are sup-
plied to the application.
