Browse Source

Log Meldungs Verwaltung hinzugefügt

kolja 6 years ago
parent
commit
804da4635b
5 changed files with 109 additions and 42 deletions
  1. 35 31
      Bildschirm.cpp
  2. 43 1
      Global.cpp
  3. 20 10
      Globals.h
  4. 9 0
      TexturList.cpp
  5. 2 0
      TexturList.h

+ 35 - 31
Bildschirm.cpp

@@ -532,7 +532,6 @@ Bildschirm3D::Bildschirm3D( WFenster *fenster )
 Bildschirm3D::~Bildschirm3D()
 {
     kameras->release();
-    renderObj->release();
     texturModel->release();
     cleanUpDirectX();
 }
@@ -540,26 +539,26 @@ Bildschirm3D::~Bildschirm3D()
 // private
 void Bildschirm3D::cleanUpDirectX()
 {
-    if( d3d11Device )
-    {
-        d3d11Device->Release();
-        d3d11Device = NULL;
-    }
-    if( d3d11Context )
+    if( renderObj )
     {
-        d3d11Context->Release();
-        d3d11Context = NULL;
+        renderObj->release();
+        renderObj = 0;
     }
-    if( d3d11SpawChain )
+    if( blendStateAlphaBlend )
     {
-        d3d11SpawChain->Release();
-        d3d11SpawChain = NULL;
+        blendStateAlphaBlend->Release();
+        blendStateAlphaBlend = NULL;
     }
     if( frameworkTextur )
     {
         frameworkTextur->release();
         frameworkTextur = NULL;
     }
+    if( sampleState )
+    {
+        sampleState->Release();
+        sampleState = NULL;
+    }
     if( pixelShader )
     {
         pixelShader->release();
@@ -570,43 +569,48 @@ void Bildschirm3D::cleanUpDirectX()
         vertexShader->release();
         vertexShader = NULL;
     }
-    if( sampleState )
-    {
-        sampleState->Release();
-        sampleState = NULL;
-    }
-    if( rtview )
+    if( depthDisabledStencilState )
     {
-        rtview->Release();
-        rtview = NULL;
+        depthDisabledStencilState->Release();
+        depthDisabledStencilState = NULL;
     }
+    delete vp;
+    vp = 0;
     if( dsView )
     {
         dsView->Release();
         dsView = NULL;
     }
+    if( depthStencilState )
+    {
+        depthStencilState->Release();
+        depthStencilState = NULL;
+    }
     if( depthStencilBuffer )
     {
         depthStencilBuffer->Release();
         depthStencilBuffer = NULL;
     }
-    if( depthStencilState )
+    if( rtview )
     {
-        depthStencilState->Release();
-        depthStencilState = NULL;
+        rtview->Release();
+        rtview = NULL;
     }
-    if( depthDisabledStencilState )
+    if( d3d11SpawChain )
     {
-        depthDisabledStencilState->Release();
-        depthDisabledStencilState = NULL;
+        d3d11SpawChain->Release();
+        d3d11SpawChain = NULL;
     }
-    if( blendStateAlphaBlend )
+    if( d3d11Device )
     {
-        blendStateAlphaBlend->Release();
-        blendStateAlphaBlend = NULL;
+        d3d11Device->Release();
+        d3d11Device = NULL;
+    }
+    if( d3d11Context )
+    {
+        d3d11Context->Release();
+        d3d11Context = NULL;
     }
-    delete vp;
-    vp = 0;
 }
 
 // nicht constant 

+ 43 - 1
Global.cpp

@@ -12,6 +12,8 @@
 #include "TexturList.h"
 #include "Globals.h"
 #include "Thread.h"
+#include "Datei.h"
+#include "Zeit.h"
 
 void Framework::initFramework()
 {
@@ -32,8 +34,10 @@ void Framework::initFramework()
 	m3dRegister = new Model3DList();
 	TexturList::init();
 	texturRegister = new TexturList();
-    istInitialisiert = 1;
     thRegister = new ThreadRegister();
+    logEnabled = 0;
+    logFile = 0;
+    istInitialisiert = 1;
 }
 
 void Framework::releaseFramework()
@@ -46,6 +50,8 @@ void Framework::releaseFramework()
 	Model3DList::destroy();
 	texturRegister->release();
 	TexturList::destroy();
+    if( logFile )
+        logFile->release();
     istInitialisiert = 0;
 }
 
@@ -94,4 +100,40 @@ Framework::Model3DList *Framework::zM3DRegister()
 Framework::TexturList *Framework::zTexturRegister()
 {
 	return texturRegister;
+}
+
+// Legt fest ob Log Nachrichten gespeichert werden sollen
+void Framework::setLogEnabled( bool le )
+{
+    logEnabled = le;
+}
+
+// Speichert eine Zeile in die Logdatei
+//  txt: die zu Speichernde Nachricht
+void Framework::logLine( char *txt )
+{
+    if( logEnabled )
+    {
+        logC.lock();
+        if( !logFile )
+        {
+            Zeit *z = getZeit();
+            logFile = new Datei();
+            logFile->setDatei( z->getZeit( "y-m-d h-i-s.log" ) );
+            logFile->erstellen();
+            z->release();
+        }
+        logFile->open( Datei::Style::schreiben | Datei::Style::lesen | Datei::Style::ende );
+        Uhrzeit *uz = getUhrzeit();
+        Text *time = uz->getUhrzeit( "h:i:s" );
+        time->append( "_" );
+        time->append( (int)GetThreadId( GetCurrentThread() ) );
+        time->append( ": " );
+        logFile->schreibe( time->getText(), time->getLength() );
+        time->release();
+        logFile->schreibe( txt, textLength( txt ) );
+        logFile->schreibe( (char*)"\n", 1 );
+        logFile->close();
+        logC.unlock();
+    }
 }

+ 20 - 10
Globals.h

@@ -2,6 +2,7 @@
 #define Globals_H
 
 #include "Punkt.h"
+#include "Critical.h"
 
 #ifndef Global
 #define Global extern
@@ -11,8 +12,9 @@ namespace Framework
 {
     class ThreadRegister; // Thread.h
     class Thread; // Thread.h
-	class Model3DList; // Model3DList.h
-	class TexturList; // TexturList.h
+    class Model3DList; // Model3DList.h
+    class TexturList; // TexturList.h
+    class Datei; // Datei.h
 #ifdef WIN32
     class Maus; // Maus.h
     class WFensterArray; // Fenster.h
@@ -23,12 +25,15 @@ namespace Framework
     Global bool msgExit;
     Global Punkt mausPos;
 #endif
-	Global bool TastenStand[ 255 ];
-	Global bool MausStand[ 3 ];
-	Global Model3DList *m3dRegister;
-	Global TexturList *texturRegister;
+    Global bool TastenStand[ 255 ];
+    Global bool MausStand[ 3 ];
+    Global Model3DList *m3dRegister;
+    Global TexturList *texturRegister;
     Global bool istInitialisiert;
     Global ThreadRegister *thRegister;
+    Global bool logEnabled;
+    Global Datei *logFile;
+    Global Critical logC;
 
 #ifdef WIN32
     // Gibt die Koordinaten der Maus auf dem Bildschirm zurück
@@ -47,10 +52,10 @@ namespace Framework
     //  taste: Die Taste, deren Status gesetzt werden soll
     //  st: Ob die Taste momentan gedrückt wird. (true), wenn ja. (false) sonnst.
     __declspec( dllexport ) void setTastenStand( unsigned char taste, bool st );
-	// Gibt das Model3DData Register des Frameworks ohne erhöhten reference Counter zurück
-	__declspec( dllexport ) Model3DList *zM3DRegister();
-	// Gibt das Textur Register des Frameworks ohne erhöhten reference Counter zurück
-	__declspec( dllexport ) TexturList *zTexturRegister();
+    // Gibt das Model3DData Register des Frameworks ohne erhöhten reference Counter zurück
+    __declspec( dllexport ) Model3DList *zM3DRegister();
+    // Gibt das Textur Register des Frameworks ohne erhöhten reference Counter zurück
+    __declspec( dllexport ) TexturList *zTexturRegister();
     // Initialisiert das Framework
     // Wird in der (WinMain) des Frameworks automatisch aufgerufen
     __declspec( dllexport ) void initFramework();
@@ -63,6 +68,11 @@ namespace Framework
     __declspec( dllexport ) bool istThreadOk( Thread *t );
     // Gibt das Thread Register des Frameworks zurück
     __declspec( dllexport ) ThreadRegister *getThreadRegister();
+    // Legt fest ob Log Nachrichten gespeichert werden sollen
+    __declspec( dllexport ) void setLogEnabled( bool le );
+    // Speichert eine Zeile in die Logdatei
+    //  txt: die zu Speichernde Nachricht
+    __declspec( dllexport ) void logLine( char *txt );
 }
 
 #endif

+ 9 - 0
TexturList.cpp

@@ -23,6 +23,15 @@ TexturList::~TexturList()
     names->release();
 }
 
+// Löscht alle Texturen
+__declspec( dllexport ) void TexturList::leeren()
+{
+    cs.lock();
+    textures->leeren();
+    names->leeren();
+    cs.unlock();
+}
+
 // Fügt der Liste eine Textur hinzu
 //  t: Die Textur
 //  name: Der name, unter dem die Textur in der Liste gespeichert wird

+ 2 - 0
TexturList.h

@@ -22,6 +22,8 @@ namespace Framework
         TexturList();
         // Destruktor
         ~TexturList();
+        // Löscht alle Texturen
+        __declspec( dllexport ) void leeren();
         // Fügt der Liste eine Textur hinzu
         //  t: Die Textur
         //  name: Der name, unter dem die Textur in der Liste gespeichert wird