Index: orxonox/trunk/src/lib/event/event.h
===================================================================
--- orxonox/trunk/src/lib/event/event.h	(revision 4781)
+++ orxonox/trunk/src/lib/event/event.h	(revision 4782)
@@ -1,3 +1,3 @@
-/*! 
+/*!
     \file event.h
     \brief an abstract event
@@ -25,9 +25,11 @@
   int      type;                        //!< the type field
   bool     bPressed;                    //!< is true, if the button/mouse was pressed, false if released
-       
+
   Uint16   x;                           //!< x coordinate
   Uint16   y;                           //!< y coordinate
   Sint16   xRel;                        //!< relative x movement to last point
   Sint16   yRel;                        //!< relative y movement to last point
+
+  SDL_ResizeEvent resize;
 };
 
Index: orxonox/trunk/src/lib/event/event_def.h
===================================================================
--- orxonox/trunk/src/lib/event/event_def.h	(revision 4781)
+++ orxonox/trunk/src/lib/event/event_def.h	(revision 4782)
@@ -30,9 +30,9 @@
   EV_JOY_BUTTON,
 
+  EV_VIDEO_RESIZE                 = SDL_VIDEORESIZE,
+
   EV_UNKNOWN,
 
   EV_NUMBER,
-
-  EV_VIDEO_RESIZE                 = SDL_VIDEORESIZE
 };
 
@@ -47,5 +47,5 @@
     ES_ALL,            //!< you want to register events for all states
 
-    ES_NUMBER,         //!< the number of states
+    ES_NUMBER,          //!< the number of states
   };
 
Index: orxonox/trunk/src/lib/event/event_handler.cc
===================================================================
--- orxonox/trunk/src/lib/event/event_handler.cc	(revision 4781)
+++ orxonox/trunk/src/lib/event/event_handler.cc	(revision 4782)
@@ -252,4 +252,7 @@
           ev.type = EV_JOY_BUTTON;
           break;
+        case SDL_VIDEORESIZE:
+          ev.resize = event.resize;
+          break;
         default:
           ev.type = EV_UNKNOWN;
Index: orxonox/trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4781)
+++ orxonox/trunk/src/lib/graphics/graphics_engine.cc	(revision 4782)
@@ -218,7 +218,7 @@
    \param resizeInfo SDL information about the size of the new screen size
 */
-int GraphicsEngine::resolutionChanged(SDL_ResizeEvent* resizeInfo)
-{
-  this->setResolution(resizeInfo->w, resizeInfo->h, this->bitsPerPixel);
+int GraphicsEngine::resolutionChanged(const SDL_ResizeEvent& resizeInfo)
+{
+  this->setResolution(resizeInfo.w, resizeInfo.h, this->bitsPerPixel);
 }
 
Index: orxonox/trunk/src/lib/graphics/graphics_engine.h
===================================================================
--- orxonox/trunk/src/lib/graphics/graphics_engine.h	(revision 4781)
+++ orxonox/trunk/src/lib/graphics/graphics_engine.h	(revision 4782)
@@ -46,5 +46,5 @@
     inline int getbbp() const { return this->bitsPerPixel; };
 
-    int resolutionChanged(SDL_ResizeEvent* resizeInfo);
+    int resolutionChanged(const SDL_ResizeEvent& resizeInfo);
 
     static void enter2DMode();
Index: orxonox/trunk/src/lib/lang/class_list.cc
===================================================================
--- orxonox/trunk/src/lib/lang/class_list.cc	(revision 4781)
+++ orxonox/trunk/src/lib/lang/class_list.cc	(revision 4782)
@@ -47,4 +47,5 @@
 ClassList::~ClassList ()
 {
+  delete this->objectList;
   --ClassList::classCount;
 }
@@ -65,4 +66,5 @@
 {
   ClassList* regClass;
+  PRINTF(5)("subscribe a %s\n", className );
 
   if(ClassList::first == NULL)
@@ -79,6 +81,9 @@
       }
 
-      if (tmp->next == NULL)
+      if (unlikely(tmp->next == NULL))
+      {
         tmp->next = regClass = new ClassList(classID, className);
+        break;
+      }
       tmp = tmp->next;
     }
Index: orxonox/trunk/src/lib/lang/class_list.h
===================================================================
--- orxonox/trunk/src/lib/lang/class_list.h	(revision 4781)
+++ orxonox/trunk/src/lib/lang/class_list.h	(revision 4782)
@@ -52,5 +52,5 @@
 
     // STATIC MEMBERS
-    static ClassList*        first;                  //!< The first Class in the List (should be BaseObject)
+    static ClassList*        first;                  //!< The first Class in the List
     static unsigned int      classCount;             //!< The Count of classes that have been registered (should match the lower description)
 };
Index: orxonox/trunk/src/orxonox.cc
===================================================================
--- orxonox/trunk/src/orxonox.cc	(revision 4781)
+++ orxonox/trunk/src/orxonox.cc	(revision 4782)
@@ -69,4 +69,5 @@
   this->argc = 0;
   this->argv = NULL;
+
 }
 
@@ -130,6 +131,6 @@
 
 
+  // initialize everything
   SDL_Init (SDL_INIT_TIMER);
-  // initialize everything
   if( initResources () == -1) return -1;
   if( initVideo() == -1) return -1;
@@ -137,7 +138,7 @@
   if( initInput() == -1) return -1;
   if( initNetworking () == -1) return -1;
-  //printf("> Initializing world\n");
-  //if( init_world () == -1) return -1; PB: world will be initialized when started
-
+
+  // subscribe the resolutionChanged-event
+  EventHandler::getInstance()->subscribe(this, ES_GAME, EV_VIDEO_RESIZE);
   return 0;
 }
@@ -288,5 +289,5 @@
     case SDL_VIDEORESIZE:
       GraphicsEngine* tmpGEngine = GraphicsEngine::getInstance();
-      tmpGEngine->resolutionChanged(&event->resize);
+      tmpGEngine->resolutionChanged(event->resize);
       break;
     }
@@ -299,5 +300,13 @@
 */
 void Orxonox::process(const Event &event)
-{}
+{
+  switch (event.type)
+  {
+    case EV_VIDEO_RESIZE:
+      GraphicsEngine::getInstance()->resolutionChanged(event.resize);
+      break;
+  }
+
+}
 
 
