소스 검색

Displaying empty SDL window

Thomas Buck 11 년 전
부모
커밋
c40ad37355
6개의 변경된 파일16개의 추가작업 그리고 26개의 파일을 삭제
  1. 0
    2
      include/OpenRaider.h
  2. 0
    2
      include/Window.h
  3. 0
    2
      include/WindowSDL.h
  4. 4
    5
      src/OpenRaider.cpp
  5. 11
    12
      src/WindowSDL.cpp
  6. 1
    3
      src/main.cpp

+ 0
- 2
include/OpenRaider.h 파일 보기

36
 
36
 
37
     void run();
37
     void run();
38
 
38
 
39
-    void cleanup();
40
-
41
 private:
39
 private:
42
     bool mInit;
40
     bool mInit;
43
     bool mRunning;
41
     bool mRunning;

+ 0
- 2
include/Window.h 파일 보기

46
     virtual void swapBuffersGL() = 0;
46
     virtual void swapBuffersGL() = 0;
47
 
47
 
48
     virtual void resizeGL(unsigned int w, unsigned int h);
48
     virtual void resizeGL(unsigned int w, unsigned int h);
49
-
50
-    virtual void cleanup() = 0;
51
 };
49
 };
52
 
50
 
53
 #endif
51
 #endif

+ 0
- 2
include/WindowSDL.h 파일 보기

46
 
46
 
47
     virtual void swapBuffersGL();
47
     virtual void swapBuffersGL();
48
 
48
 
49
-    virtual void cleanup();
50
-
51
 private:
49
 private:
52
     bool mInit;
50
     bool mInit;
53
     char *mDriver;
51
     char *mDriver;

+ 4
- 5
src/OpenRaider.cpp 파일 보기

15
 #include "utils/time.h"
15
 #include "utils/time.h"
16
 #include "OpenRaider.h"
16
 #include "OpenRaider.h"
17
 
17
 
18
+#define MAX_MS_PER_FRAME (1000 / MAXIMUM_FPS)
19
+
18
 OpenRaider::OpenRaider() {
20
 OpenRaider::OpenRaider() {
19
     mInit = false;
21
     mInit = false;
20
     mRunning = false;
22
     mRunning = false;
60
         mWindow->eventHandling();
62
         mWindow->eventHandling();
61
 
63
 
62
         clock_t stopTime = systemTimerGet();
64
         clock_t stopTime = systemTimerGet();
63
-        mWindow->delay((1000 / MAXIMUM_FPS) - (stopTime - startTime));
65
+        if (MAX_MS_PER_FRAME > (stopTime - startTime))
66
+            mWindow->delay(MAX_MS_PER_FRAME - (stopTime - startTime));
64
     }
67
     }
65
 }
68
 }
66
 
69
 
67
-void OpenRaider::cleanup() {
68
-    mWindow->cleanup();
69
-}
70
-

+ 11
- 12
src/WindowSDL.cpp 파일 보기

12
 #include "utils/strings.h"
12
 #include "utils/strings.h"
13
 #include "WindowSDL.h"
13
 #include "WindowSDL.h"
14
 
14
 
15
+#define SUBSYSTEMS_USED (SDL_INIT_VIDEO | SDL_INIT_EVENTS)
16
+
15
 WindowSDL::WindowSDL() {
17
 WindowSDL::WindowSDL() {
16
     mInit = false;
18
     mInit = false;
17
     mDriver = NULL;
19
     mDriver = NULL;
26
 WindowSDL::~WindowSDL() {
28
 WindowSDL::~WindowSDL() {
27
     if (mDriver)
29
     if (mDriver)
28
         delete [] mDriver;
30
         delete [] mDriver;
31
+
32
+    if (mInit) {
33
+        SDL_QuitSubSystem(SUBSYSTEMS_USED);
34
+        SDL_Quit();
35
+    }
29
 }
36
 }
30
 
37
 
31
 void WindowSDL::setDriver(const char *driver) {
38
 void WindowSDL::setDriver(const char *driver) {
76
 int WindowSDL::initialize() {
83
 int WindowSDL::initialize() {
77
     assert(mInit == false);
84
     assert(mInit == false);
78
 
85
 
79
-    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
86
+    if (SDL_Init(SUBSYSTEMS_USED) != 0) {
80
         printf("SDL_Init Error: %s\n", SDL_GetError());
87
         printf("SDL_Init Error: %s\n", SDL_GetError());
81
         return -1;
88
         return -1;
82
     }
89
     }
142
 
149
 
143
     while(SDL_PollEvent(&event)) {
150
     while(SDL_PollEvent(&event)) {
144
         switch (event.type) {
151
         switch (event.type) {
145
-            case SDL_QUIT:
146
-                exit(0);
147
-                break;
148
-
149
             case SDL_MOUSEMOTION:
152
             case SDL_MOUSEMOTION:
150
 
153
 
151
                 break;
154
                 break;
164
                 if (event.window.event == SDL_WINDOWEVENT_RESIZED)
167
                 if (event.window.event == SDL_WINDOWEVENT_RESIZED)
165
                     setSize(event.window.data1, event.window.data2);
168
                     setSize(event.window.data1, event.window.data2);
166
                 break;
169
                 break;
170
+
171
+            case SDL_QUIT:
172
+                exit(0);
167
         }
173
         }
168
     }
174
     }
169
 }
175
 }
188
     SDL_GL_SwapWindow(mWindow);
194
     SDL_GL_SwapWindow(mWindow);
189
 }
195
 }
190
 
196
 
191
-void WindowSDL::cleanup() {
192
-    if (mInit) {
193
-        //SDL_QuitSubSystem(SDL_OPENGL);
194
-        SDL_Quit();
195
-    }
196
-}
197
-

+ 1
- 3
src/main.cpp 파일 보기

16
 OpenRaider *gOpenRaider = NULL;
16
 OpenRaider *gOpenRaider = NULL;
17
 
17
 
18
 void cleanupHandler() {
18
 void cleanupHandler() {
19
-    if (gOpenRaider) {
20
-        gOpenRaider->cleanup();
19
+    if (gOpenRaider)
21
         delete gOpenRaider;
20
         delete gOpenRaider;
22
-    }
23
 }
21
 }
24
 
22
 
25
 int main(int argc, char *argv[]) {
23
 int main(int argc, char *argv[]) {

Loading…
취소
저장