From d6bf5d6d48d0819c955e6e348516ec75665d08b1 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Wed, 8 Apr 2015 00:26:49 -0400 Subject: [PATCH] Added allocation logging to Objective-C objects. Fixed some Mac OS X build issues. --- button_darwin.m | 2 ++ container_darwin.m | 2 ++ init_darwin.m | 2 ++ uipriv_darwin.h | 18 ++++++++++++++++++ window_darwin.m | 4 +++- 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/button_darwin.m b/button_darwin.m index 7daf209b..87c45250 100644 --- a/button_darwin.m +++ b/button_darwin.m @@ -9,6 +9,8 @@ @implementation button +uiLogObjCClassAllocations + - (IBAction)buttonClicked:(id)sender { (*(self.onClicked))(self.c, self.onClickedData); diff --git a/container_darwin.m b/container_darwin.m index d23eedf5..f869f2cb 100644 --- a/container_darwin.m +++ b/container_darwin.m @@ -10,6 +10,8 @@ // thanks to mikeash and JtRip in irc.freenode.net/#macdev @implementation uiContainer +uiLogObjCClassAllocations + - (void)setFrameSize:(NSSize)s { uiSizing d; diff --git a/init_darwin.m b/init_darwin.m index b251b479..d26c3fa5 100644 --- a/init_darwin.m +++ b/init_darwin.m @@ -6,6 +6,8 @@ @implementation uiApplication +uiLogObjCClassAllocations + // hey look! we're overriding terminate:! // we're going to make sure we can go back to main() whether Cocoa likes it or not! // and just how are we going to do that, hm? diff --git a/uipriv_darwin.h b/uipriv_darwin.h index dd3467ad..e1b38afa 100644 --- a/uipriv_darwin.h +++ b/uipriv_darwin.h @@ -11,6 +11,24 @@ struct uiSizing { }; +#ifdef uiLogAllocations +#import +#define uiLogObjCClassAllocations \ +- (id)init \ +{ \ + self = [super init]; \ + fprintf(stderr, "%p alloc %s\n", self, [[self className] UTF8String]); \ + return self; \ +} \ +- (void)dealloc \ +{ \ + [super dealloc]; \ + fprintf(stderr, "%p free\n", self); \ +} +#else +#define uiLogObjCClassAllocations +#endif + // util_darwin.m extern void setStandardControlFont(NSControl *); diff --git a/window_darwin.m b/window_darwin.m index 8beb008d..795c2e03 100644 --- a/window_darwin.m +++ b/window_darwin.m @@ -12,6 +12,8 @@ @implementation uiWindowDelegate +uiLogObjCClassAllocations + // TODO will this *destroy* the window? - (BOOL)windowShouldClose:(id)win { @@ -39,7 +41,7 @@ uiWindow *uiNewWindow(char *title, int width, int height) { uiWindow *w; - w = (uiWindow *) uiAlloc(sizeof (uiWindow)); + w = uiNew(uiWindow); w->w = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, (CGFloat) width, (CGFloat) height) styleMask:(NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask)