Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5131 clevermous 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
}