src/video/photon/SDL_ph_wm.c
author Sam Lantinga <slouken@libsdl.org>
Mon, 20 Jan 2003 01:38:37 +0000
changeset 571 8e3ce997621c
parent 315 3333b6e68289
child 663 8bedd6d61642
permissions -rw-r--r--
Date: Thu, 16 Jan 2003 13:48:31 +0200
From: "Mike Gorchak"
Subject: All QNX patches

whole patches concerning QNX. Almost all code has been rewritten by Julian
and me. Added initial support for hw overlays in QNX and many many others
fixes.

P.S. This patches has been reviewed by Dave Rempel from QSSL and included in
SDL 1.2.5 distribution, which coming on 3rd party CD for newest 6.2.1
version of QNX, which will be available soon.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Library General Public
     7     License as published by the Free Software Foundation; either
     8     version 2 of the License, or (at your option) any later version.
     9 
    10     This library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Library General Public License for more details.
    14 
    15     You should have received a copy of the GNU Library General Public
    16     License along with this library; if not, write to the Free
    17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 
    23 #ifdef SAVE_RCSID
    24 static char rcsid =
    25  "@(#) $Id$";
    26 #endif
    27 
    28 #define DISABLE_X11
    29 
    30 #include <stdlib.h>
    31 #include <string.h>
    32 #include <Ph.h>
    33 #include <photon/PpProto.h>
    34 #include <photon/PhWm.h>
    35 #include <photon/wmapi.h>
    36 #include "SDL_version.h"
    37 #include "SDL_error.h"
    38 #include "SDL_timer.h"
    39 #include "SDL_video.h"
    40 #include "SDL_syswm.h"
    41 #include "SDL_events_c.h"
    42 #include "SDL_pixels_c.h"
    43 #include "SDL_ph_modes_c.h"
    44 #include "SDL_ph_wm_c.h"
    45 
    46 /* This is necessary for working properly with Enlightenment, etc. */
    47 #define USE_ICON_WINDOW
    48 
    49 void ph_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask)
    50 {
    51     return;
    52 }
    53 
    54 /* Set window caption */
    55 void ph_SetCaption(_THIS, const char *title, const char *icon)
    56 {
    57     SDL_Lock_EventThread();
    58 
    59     /* sanity check for set caption call before window init */
    60     if (window!=NULL)
    61     {
    62         PtSetResource(window, Pt_ARG_WINDOW_TITLE, title, 0);
    63     }
    64 
    65     SDL_Unlock_EventThread();
    66 }
    67 
    68 /* Iconify current window */
    69 int ph_IconifyWindow(_THIS)
    70 {
    71     PhWindowEvent_t windowevent;
    72 
    73     SDL_Lock_EventThread();
    74 
    75     memset( &windowevent, 0, sizeof (event) );
    76     windowevent.event_f = Ph_WM_HIDE;
    77     windowevent.event_state = Ph_WM_EVSTATE_HIDE;
    78     windowevent.rid = PtWidgetRid( window );
    79     PtForwardWindowEvent( &windowevent );
    80     SDL_Unlock_EventThread();
    81 
    82     return 0;
    83 }
    84 
    85 SDL_GrabMode ph_GrabInputNoLock(_THIS, SDL_GrabMode mode)
    86 {
    87     short abs_x, abs_y;
    88 
    89     if( mode == SDL_GRAB_OFF )
    90     {
    91         PtSetResource(window, Pt_ARG_WINDOW_STATE, Pt_FALSE, Ph_WM_STATE_ISALTKEY);
    92     }
    93     else
    94     {
    95         PtSetResource(window, Pt_ARG_WINDOW_STATE, Pt_TRUE, Ph_WM_STATE_ISALTKEY);
    96 
    97         PtGetAbsPosition(window, &abs_x, &abs_y);
    98         PhMoveCursorAbs(PhInputGroup(NULL), abs_x + SDL_VideoSurface->w/2, abs_y + SDL_VideoSurface->h/2);
    99     }
   100 
   101     SDL_Unlock_EventThread();
   102 
   103     return(mode);
   104 }
   105 
   106 SDL_GrabMode ph_GrabInput(_THIS, SDL_GrabMode mode)
   107 {
   108     SDL_Lock_EventThread();
   109     mode = ph_GrabInputNoLock(this, mode);
   110     SDL_Unlock_EventThread();
   111 
   112     return(mode);
   113 }
   114 
   115 
   116 int ph_GetWMInfo(_THIS, SDL_SysWMinfo *info)
   117 {
   118     if (info->version.major <= SDL_MAJOR_VERSION)
   119     {
   120         return 1;
   121     }
   122     else
   123     {
   124         SDL_SetError("Application not compiled with SDL %d.%d\n",
   125                       SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
   126         return -1;
   127     }
   128 }