author Sam Lantinga <>
Mon, 04 Aug 2003 00:52:42 +0000
changeset 663 8bedd6d61642
parent 380 bce7171e7a85
child 692 04dd6c6d7c30
permissions -rw-r--r--
Date: Sat, 2 Aug 2003 16:22:51 +0300
From: "Mike Gorchak"
Subject: New patches for QNX6

Here my patches for the SDL/QNX:

QNXSDL.diff - diff to non-QNX related sources:

- updated BUGS file, I think QNX6 is now will be officially supported
- - added shared library support for QNX, and removed dependency between the ALSA and QNX6.
- SDL_audio.c - added QNX NTO sound bootstrap insted of ALSA's.
- SDL_sysaudio.h - the same.
- SDL_nto_audio.c - the same.
- SDL_video.c - right now, QNX doesn't offer any method to obtain pointers to the OpenGL functions by function name, so they must be hardcoded in library, otherwise OpenGL will not be supported.
- testsprite.c - fixed: do not draw vertical red line if we are in non-double-buffered mode.

sdlqnxph.tar.gz - archive of the ./src/video/photon/* . Too many changes in code to make diffs :) :

+ Added stub for support hide/unhide window event
+ Added full YUV overlays support.
+ Added window maximize support.
+ Added mouse wheel events.
+ Added support for some specific key codes in Unicode mode (like ESC).
+ Added more checks to the all memory allocation code.
+ Added SDL_DOUBLEBUF support in all fullscreen modes.
+ Added fallback to window mode, if desired fullscreen mode is not supported.
+ Added stub support for the GL_LoadLibrary and GL_GetProcAddress functions.
+ Added resizable window support without caption.
! Fixed bug in the Ph_EV_EXPOSE event handler, when rectangles to update is 0 and when width or height of the rectangle is 0.
! Fixed bug in the event handler code. Events has not been passed to the window widget handler.
! Fixed codes for Win keys (Super/Hyper/Menu).
! Fixed memory leak, when deallocation palette.
! Fixed palette emulation code bugs.
! Fixed fullscreen and hwsurface handling.
! Fixed CLOSE button bug. First event was passed to the handler, but second terminated the application. Now all events passed to the application correctly.
- Removed all printfs in code, now SDL_SetError used instead of them.
- Disabled ToggleFullScreen function.

README.QNX - updated README.QNX file. Added much more issues.
     1 README by Mike Gorchak <>, <>
     2 Last changed at 29 Jul 2003.
     4 =========================================================================
     5 OpenGL:
     7     OpenGL in window mode  works well  and  stable, in fullscreen
     8 mode too, but fullscreen mode has not been heavily tested yet.
     9     If you have QNX RtP version 6.1.0 and above you must download
    10 new Photon3D runtime from or install it
    11 from public repository or from public CD, available with QNX. The
    12 versions of OS before 6.1.0 are not supported.
    13     While  creating  OpenGL  context  software  renderer  mode is
    14 artificially selected (QSSL  made  acceleration  only for  Voodoo
    15 boards in fullscreen mode, sorry but I  don't have  this board to
    16 test OpenGL - maybe it work or maybe not :)). If you want accele-
    17 ration - you may remove some line in source code: find  the  file
    18 SDL_ph_video.c and remove the following
    20     OGLAttrib[OGLargc++]=PHOGL_ATTRIB_FORCE_SW;
    22 line in the ph_SetupOpenGLContext() function or  change  argument
    25 =========================================================================
    26 Wheel and multibutton mouses:
    28     Photon emitting keyboard events (key up and down) when  moved
    29 mouse wheel. But key_scan field appears valid according to flags,
    30 and it contain zero. It is base method of detecting  mouse  wheel
    31 events under photon. It looks like a hack, but it works for me :)
    32 on different PC configurations.
    34 I'm tested it on:
    36 1. Genius Optical NetScroll/+ (1 wheel)
    37 2. A4Tech Optical GreatEye WheelMouse, model: WOP-35. (2 wheels +
    38    2 additional buttons). Wheel for vertical scrolling  works  as
    39    usual, but second wheel for horizontal scrolling emitting  two
    40    consequented events up or down, so it can  provide  more  fast
    41    scrolling then the  first  wheel. Additional  buttons  doesn't
    42    emitting any events, but its look like  handled by  photon  in
    43    unusual way - like click to front, but works not with any win-
    44    dow, looks like bug-o-feature :).
    46 =========================================================================
    47 CDROM handling issues:
    49     Access to CDROM can be provided only with 'root'  previleges.
    50 I can't do anything with this fact. /dev/cd0 have  the brw-------
    51 flags and root:root rights.
    53 =========================================================================
    54 Video Overlays:
    56     Overlays can flickering during the window movement, resizing,
    57 etc. It happens because photon driver  updates  the  real  window
    58 contents behind the overlay, then draws the temporary  chroma key
    59 color over window contents. It can be done without the chroma key
    60 using but it cause overlay will be  always  on top. So flickering
    61 during the movement much better in that case.
    62     Double buffering code temporary disabled in the photon driver
    63 code, beacuse on my GF2-MX it  cause  accidently  buffer  switch,
    64 which going to the old frame showing. S3 Savage3D have  the  same
    65 problem, but ATI Rage 128 has not this problem. I think it can be
    66 fixed later. Current code works very fine, so maybe double buffe-
    67 ring is not needed right now.
    68     Something strange appears when you tried to move window  with
    69 overlay beyond the left border of the screen. Overlay  trying  to
    70 stay at position x=0, but when tried to move  it  a  bit  more it
    71 jumps  at  posituin  x=-60. Really  strange, looks  like  overlay
    72 doesn't love the negotive coordinates.
    74 =========================================================================
    75 Shared library building:
    77     Shared  library can be  built, but before  running
    78 script you  need  manually  delete  the  libtool  m4  stuff  from
    79 the acinclude.m4 file (it comes after ESD  detection  code  up to
    80 end of the file). Because libtool stuff in the  acinclude.m4 file
    81 very old and doesn't know anything about the QNX. Just  remove it
    82 and run script.
    84 =========================================================================
    85 Some building issues:
    87     Feel free to not pass --disable-shared option  to  configure,
    88 if you read comment above about 'Shared library building'. Other-
    89 wise this option is strongly  recomended, because  the sdl-config
    90 script will be unfunctional.
    92     Run configure script without x11 support, e.g.:
    94     a) for OpenGL support:
    95     ./configure --prefix=/usr/local \
    96                 --disable-video-x11 \
    97                 --disable-shared
    99     b) without OpenGL support:
   100     ./configure --prefix=/usr/local \
   101                 --disable-video-x11 \
   102                 --disable-shared    \
   103                 --disable-video-opengl
   105     In test directory  also run  ./configure  script  without x11
   106 support, e.g.:
   108     ./configure  --with-sdl-prefix=/usr/local      \
   109                  --with-sdl-exec-prefix=/usr/local \
   110                  --prefix=/usr/local --without-x