SDL_ph_wm.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

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