Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001  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@devolution.com
  21. */
  22.  
  23.  
  24. /* Resize event handling code for SDL */
  25.  
  26. #include "SDL_events.h"
  27. #include "SDL_events_c.h"
  28. #include "SDL_sysvideo.h"
  29.  
  30.  
  31. /* Keep the last resize event so we don't post duplicates */
  32. static struct {
  33.         int w;
  34.         int h;
  35. } last_resize;
  36.  
  37. /* This is global for SDL_eventloop.c */
  38. int SDL_PrivateResize(int w, int h)
  39. {
  40.         int posted;
  41.         SDL_Event events[32];
  42.  
  43.         /* See if this event would change the video surface */
  44.         if ( !w || !h ||
  45.              ((last_resize.w == w) && (last_resize.h == h)) ) {
  46.                 return(0);
  47.         }
  48.         last_resize.w = w;
  49.         last_resize.h = h;
  50.         if ( ! SDL_VideoSurface ||
  51.              ((w == SDL_VideoSurface->w) && (h == SDL_VideoSurface->h)) ) {
  52.                 return(0);
  53.         }
  54.  
  55.         /* Pull out all old resize events */
  56.         SDL_PeepEvents(events, sizeof(events)/sizeof(events[0]),
  57.                             SDL_GETEVENT, SDL_VIDEORESIZEMASK);
  58.  
  59.         /* Post the event, if desired */
  60.         posted = 0;
  61.         if ( SDL_ProcessEvents[SDL_VIDEORESIZE] == SDL_ENABLE ) {
  62.                 SDL_Event event;
  63.                 event.type = SDL_VIDEORESIZE;
  64.                 event.resize.w = w;
  65.                 event.resize.h = h;
  66.                 if ( (SDL_EventOK == NULL) || (*SDL_EventOK)(&event) ) {
  67.                         posted = 1;
  68.                         SDL_PushEvent(&event);
  69.                 }
  70.         }
  71.         return(posted);
  72. }
  73.