1 /* 2 SDL - Simple DirectMedia Layer 3 Copyright (C) 1997-2012 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 (at) 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(windowevent)); 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 } 119