author Sam Lantinga <>
Sun, 21 Sep 2003 18:13:48 +0000
changeset 718 cbc0f7fabd1c
parent 701 aaf3b8af6616
child 753 b14fdadd8311
permissions -rw-r--r--
Date: Sat, 13 Sep 2003 15:50:43 +0300 From: "Mike Gorchak" Subject: QNX fixes improved sound code for the QNX, added workarounds for known bugs, fixed photon detect code. Update .qpg file.

README by Mike Gorchak <>, <>
Last changed at 12 Aug 2003.


    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 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_video.c  and
remove the following

line in the ph_SetupOpenGLContext() function or change the argument to

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-

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 :).

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.

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.

Shared library building:

    A shared library can be built, but before running  the
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 is very  old
and  doesn't  know  anything  about  QNX. Just   remove  it, then  run
"libtoolize --force --copy" and after that run the script.

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 \

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

    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