src/video/photon/SDL_ph_wm.c
author Sam Lantinga <slouken@libsdl.org>
Tue, 21 Feb 2006 08:46:50 +0000
changeset 1402 d910939febfa
parent 1361 19418e4422cb
child 1482 141528317f4f
permissions -rw-r--r--
Use consistent identifiers for the various platforms we support.
Make sure every source file includes SDL_config.h, so the proper system
headers are chosen.
     1 /*
     2     SDL - Simple DirectMedia Layer
     3     Copyright (C) 1997-2006 Sam Lantinga
     4 
     5     This library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 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     Lesser General Public License for more details.
    14 
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with this library; if not, write to the Free Software
    17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    18 
    19     Sam Lantinga
    20     slouken@libsdl.org
    21 */
    22 #include "SDL_config.h"
    23 
    24 #include <Ph.h>
    25 #include <photon/PpProto.h>
    26 #include <photon/PhWm.h>
    27 #include <photon/wmapi.h>
    28 
    29 #include "SDL_version.h"
    30 #include "SDL_timer.h"
    31 #include "SDL_video.h"
    32 #include "SDL_syswm.h"
    33 #include "../SDL_pixels_c.h"
    34 #include "../../events/SDL_events_c.h"
    35 #include "SDL_ph_modes_c.h"
    36 #include "SDL_ph_wm_c.h"
    37 
    38 void ph_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask)
    39 {
    40     return;
    41 }
    42 
    43 /* Set window caption */
    44 void ph_SetCaption(_THIS, const char *title, const char *icon)
    45 {
    46     SDL_Lock_EventThread();
    47 
    48     /* sanity check for set caption call before window init */
    49     if (window!=NULL)
    50     {
    51         PtSetResource(window, Pt_ARG_WINDOW_TITLE, title, 0);
    52     }
    53 
    54     SDL_Unlock_EventThread();
    55 }
    56 
    57 /* Iconify current window */
    58 int ph_IconifyWindow(_THIS)
    59 {
    60     PhWindowEvent_t windowevent;
    61 
    62     SDL_Lock_EventThread();
    63 
    64     SDL_memset( &windowevent, 0, sizeof (event) );
    65     windowevent.event_f = Ph_WM_HIDE;
    66     windowevent.event_state = Ph_WM_EVSTATE_HIDE;
    67     windowevent.rid = PtWidgetRid(window);
    68     PtForwardWindowEvent(&windowevent);
    69 
    70     SDL_Unlock_EventThread();
    71 
    72     return 0;
    73 }
    74 
    75 SDL_GrabMode ph_GrabInputNoLock(_THIS, SDL_GrabMode mode)
    76 {
    77     short abs_x, abs_y;
    78 
    79     if( mode == SDL_GRAB_OFF )
    80     {
    81         PtSetResource(window, Pt_ARG_WINDOW_STATE, Pt_FALSE, Ph_WM_STATE_ISALTKEY);
    82     }
    83     else
    84     {
    85         PtSetResource(window, Pt_ARG_WINDOW_STATE, Pt_TRUE, Ph_WM_STATE_ISALTKEY);
    86 
    87         PtGetAbsPosition(window, &abs_x, &abs_y);
    88         PhMoveCursorAbs(PhInputGroup(NULL), abs_x + SDL_VideoSurface->w/2, abs_y + SDL_VideoSurface->h/2);
    89     }
    90 
    91     SDL_Unlock_EventThread();
    92 
    93     return(mode);
    94 }
    95 
    96 SDL_GrabMode ph_GrabInput(_THIS, SDL_GrabMode mode)
    97 {
    98     SDL_Lock_EventThread();
    99     mode = ph_GrabInputNoLock(this, mode);
   100     SDL_Unlock_EventThread();
   101 
   102     return(mode);
   103 }
   104 
   105 
   106 int ph_GetWMInfo(_THIS, SDL_SysWMinfo *info)
   107 {
   108     if (info->version.major <= SDL_MAJOR_VERSION)
   109     {
   110         return 1;
   111     }
   112     else
   113     {
   114         SDL_SetError("Application not compiled with SDL %d.%d\n",
   115                       SDL_MAJOR_VERSION, SDL_MINOR_VERSION);
   116         return -1;
   117     }
   118 }