]> git.cworth.org Git - apitrace/commitdiff
Merge branch 'master' into compression
authorZack Rusin <zack@kde.org>
Wed, 24 Aug 2011 03:02:10 +0000 (23:02 -0400)
committerZack Rusin <zack@kde.org>
Wed, 24 Aug 2011 03:02:10 +0000 (23:02 -0400)
Conflicts:
trace_writer.cpp

1  2 
trace_writer.cpp
trace_writer.hpp

index 7511d3192420db31f65ee2e74dd5203db3ec201a,7fcd0e6762b24acd247d536e670a5d36b99ef8ac..057e3957be289a63b9598c3c4344ae75171cb71e
@@@ -77,51 -79,12 +77,9 @@@ Writer::open(const char *filename) 
      return true;
  }
  
- void
- Writer::open(void) {
-     static unsigned dwCounter = 0;
-     const char *szExtension = "trace";
-     char szFileName[PATH_MAX];
-     const char *lpFileName;
-     lpFileName = getenv("TRACE_FILE");
-     if (lpFileName) {
-         strncpy(szFileName, lpFileName, PATH_MAX);
-     }
-     else {
-         char szProcessName[PATH_MAX];
-         char szCurrentDir[PATH_MAX];
-         OS::GetProcessName(szProcessName, PATH_MAX);
-         OS::GetCurrentDir(szCurrentDir, PATH_MAX);
-         for (;;) {
-             FILE *file;
-             if (dwCounter)
-                 snprintf(szFileName, PATH_MAX, "%s%c%s.%u.%s", szCurrentDir, PATH_SEP, szProcessName, dwCounter, szExtension);
-             else
-                 snprintf(szFileName, PATH_MAX, "%s%c%s.%s", szCurrentDir, PATH_SEP, szProcessName, szExtension);
-             file = fopen(szFileName, "rb");
-             if (file == NULL)
-                 break;
-             fclose(file);
-             ++dwCounter;
-         }
-     }
-     OS::DebugMessage("apitrace: tracing to %s\n", szFileName);
-     open(szFileName);
- }
  void inline
  Writer::_write(const void *sBuffer, size_t dwBytesToWrite) {
 -    if (g_gzFile == NULL)
 -        return;
 -
 -    gzwrite(g_gzFile, sBuffer, dwBytesToWrite);
 +    m_file->write(sBuffer, dwBytesToWrite);
  }
  
  void inline
@@@ -350,5 -303,76 +298,75 @@@ void Writer::writeOpaque(const void *ad
      _writeUInt((size_t)addr);
  }
  
 -    if (!g_gzFile) {
+ void
+ LocalWriter::open(void) {
+     static unsigned dwCounter = 0;
+     const char *szExtension = "trace";
+     char szFileName[PATH_MAX];
+     const char *lpFileName;
+     lpFileName = getenv("TRACE_FILE");
+     if (lpFileName) {
+         strncpy(szFileName, lpFileName, PATH_MAX);
+     }
+     else {
+         char szProcessName[PATH_MAX];
+         char szCurrentDir[PATH_MAX];
+         OS::GetProcessName(szProcessName, PATH_MAX);
+         OS::GetCurrentDir(szCurrentDir, PATH_MAX);
+         for (;;) {
+             FILE *file;
+             if (dwCounter)
+                 snprintf(szFileName, PATH_MAX, "%s%c%s.%u.%s", szCurrentDir, PATH_SEP, szProcessName, dwCounter, szExtension);
+             else
+                 snprintf(szFileName, PATH_MAX, "%s%c%s.%s", szCurrentDir, PATH_SEP, szProcessName, szExtension);
+             file = fopen(szFileName, "rb");
+             if (file == NULL)
+                 break;
+             fclose(file);
+             ++dwCounter;
+         }
+     }
+     OS::DebugMessage("apitrace: tracing to %s\n", szFileName);
+     Writer::open(szFileName);
+ }
+ unsigned LocalWriter::beginEnter(const FunctionSig *sig) {
+     OS::AcquireMutex();
 -    gzflush(g_gzFile, Z_SYNC_FLUSH);
++    if (!m_file->isOpened()) {
+         open();
+     }
+     return Writer::beginEnter(sig);
+ }
+ void LocalWriter::endEnter(void) {
+     Writer::endEnter();
 -    gzflush(g_gzFile, Z_SYNC_FLUSH);
+     OS::ReleaseMutex();
+ }
+ void LocalWriter::beginLeave(unsigned call) {
+     OS::AcquireMutex();
+     Writer::beginLeave(call);
+ }
+ void LocalWriter::endLeave(void) {
+     Writer::endLeave();
++    m_file->flush();
+     OS::ReleaseMutex();
+ }
  } /* namespace Trace */
  
Simple merge