Ken Thomases : winemac: Add a simple ERR() logging macro that can be used from Cocoa code.

Alexandre Julliard julliard at winehq.org
Mon Jan 21 13:52:23 CST 2013


Module: wine
Branch: master
Commit: b6d902ee4611e648fff592c0e4c8834f48590690
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b6d902ee4611e648fff592c0e4c8834f48590690

Author: Ken Thomases <ken at codeweavers.com>
Date:   Mon Jan 21 00:07:47 2013 -0600

winemac: Add a simple ERR() logging macro that can be used from Cocoa code.

---

 dlls/winemac.drv/cocoa_app.h    |    6 ++++++
 dlls/winemac.drv/cocoa_app.m    |   24 ++++++++++++++++++++++++
 dlls/winemac.drv/macdrv_cocoa.h |    2 ++
 dlls/winemac.drv/macdrv_main.c  |    1 +
 4 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/dlls/winemac.drv/cocoa_app.h b/dlls/winemac.drv/cocoa_app.h
index bdaadf5..88da00c 100644
--- a/dlls/winemac.drv/cocoa_app.h
+++ b/dlls/winemac.drv/cocoa_app.h
@@ -23,6 +23,9 @@
 #include "macdrv_cocoa.h"
 
 
+#define ERR(...) do { if (macdrv_err_on) LogError(__func__, __VA_ARGS__); } while (false)
+
+
 @interface WineApplication : NSApplication <NSApplicationDelegate>
 
     - (void) transformProcessToForeground;
@@ -31,3 +34,6 @@
 
 void OnMainThread(dispatch_block_t block);
 void OnMainThreadAsync(dispatch_block_t block);
+
+void LogError(const char* func, NSString* format, ...);
+void LogErrorv(const char* func, NSString* format, va_list args);
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m
index d869a05..45991f0 100644
--- a/dlls/winemac.drv/cocoa_app.m
+++ b/dlls/winemac.drv/cocoa_app.m
@@ -21,6 +21,9 @@
 #import "cocoa_app.h"
 
 
+int macdrv_err_on;
+
+
 @implementation WineApplication
 
     - (void) transformProcessToForeground
@@ -87,3 +90,24 @@ void OnMainThreadAsync(dispatch_block_t block)
 {
     dispatch_async(dispatch_get_main_queue(), block);
 }
+
+/***********************************************************************
+ *              LogError
+ */
+void LogError(const char* func, NSString* format, ...)
+{
+    va_list args;
+    va_start(args, format);
+    LogErrorv(func, format, args);
+    va_end(args);
+}
+
+/***********************************************************************
+ *              LogErrorv
+ */
+void LogErrorv(const char* func, NSString* format, va_list args)
+{
+    NSString* message = [[NSString alloc] initWithFormat:format arguments:args];
+    fprintf(stderr, "err:%s:%s", func, [message UTF8String]);
+    [message release];
+}
diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h
index b5f3a14..a7df9ca 100644
--- a/dlls/winemac.drv/macdrv_cocoa.h
+++ b/dlls/winemac.drv/macdrv_cocoa.h
@@ -109,6 +109,8 @@ struct macdrv_display {
 
 
 /* main */
+extern int macdrv_err_on;
+
 extern int macdrv_start_cocoa_app(void) DECLSPEC_HIDDEN;
 
 
diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c
index 9ee249d..e209f3d 100644
--- a/dlls/winemac.drv/macdrv_main.c
+++ b/dlls/winemac.drv/macdrv_main.c
@@ -36,6 +36,7 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
     switch(reason)
     {
     case DLL_PROCESS_ATTACH:
+        macdrv_err_on = ERR_ON(macdrv);
         if (macdrv_start_cocoa_app())
         {
             ERR("Failed to start Cocoa app main loop\n");




More information about the wine-cvs mailing list