Page MenuHomePhabricator (Chris)

No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
diff --git a/util/events.cpp b/util/events.cpp
index efbb5f89..993a9292 100644
--- a/util/events.cpp
+++ b/util/events.cpp
@@ -1,77 +1,87 @@
#ifdef USE_SDL
#include <SDL.h>
#endif
#include "bitmap.h"
#include "events.h"
#include "exceptions/shutdown_exception.h"
#include "funcs.h"
#include "thread.h"
namespace Util{
EventManager::EventManager(){
}
#ifdef USE_SDL
void EventManager::runSDL(){
SDL_Event event;
while (SDL_PollEvent(&event) == 1){
switch (event.type){
case SDL_QUIT : {
dispatch(CloseWindow);
break;
}
case SDL_VIDEORESIZE : {
- dispatch(ResizeScreen, event.resize.w, event.resize.h);
+ int width = event.resize.w;
+ int height = event.resize.h;
+ /* to keep the perspective correct
+ * 640/480 = 1.33333
+ */
+ if (width > height){
+ height = (int)((double) width / 1.3333333333);
+ } else {
+ width = (int)((double) height * 1.3333333333);
+ }
+ dispatch(ResizeScreen, width, height);
break;
}
default : {
break;
}
}
}
}
#endif
void EventManager::run(){
#ifdef USE_SDL
runSDL();
#endif
}
/* kill the program if the user requests */
void EventManager::waitForThread(WaitThread & thread){
while (!thread.isRunning()){
try{
run();
} catch (const ShutdownException & death){
thread.kill();
throw death;
}
Util::rest(10);
}
}
EventManager::~EventManager(){
}
void EventManager::dispatch(Event type, int arg1, int arg2){
switch (type){
case ResizeScreen : {
Bitmap::setGraphicsMode(0, arg1, arg2);
break;
}
default : break;
}
}
void EventManager::dispatch(Event type){
switch (type){
case CloseWindow : {
throw ShutdownException();
}
default : break;
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Thu, Jun 11, 12:30 PM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
69042
Default Alt Text
(2 KB)

Event Timeline