From 2e5ea079c8acfa85322e1943d696404d8b329a95 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sat, 13 Jul 2019 16:49:13 +0200 Subject: [PATCH] move dirs init for iOS and OSX --- PanoPainter-OSX/main.cpp | 64 +++++++++++++++++++++----- PanoPainter-OSX/main.h | 9 ++++ PanoPainter/GameViewController.h | 3 +- PanoPainter/GameViewController.m | 67 ++++++++++++++++++--------- src/app.cpp | 77 +------------------------------- src/app.h | 1 + 6 files changed, 111 insertions(+), 110 deletions(-) diff --git a/PanoPainter-OSX/main.cpp b/PanoPainter-OSX/main.cpp index 1985470..2082c22 100644 --- a/PanoPainter-OSX/main.cpp +++ b/PanoPainter-OSX/main.cpp @@ -417,14 +417,7 @@ } @end -@interface AppOSX : NSApplication -{ - Window* window; - Controller* controller; - View* view; - NSString* file2open; -} -@end @implementation AppOSX +@implementation AppOSX - (instancetype)init { self = [super init]; @@ -458,10 +451,6 @@ // Do some additional configuration if needed here [[BITHockeyManager sharedHockeyManager] startManager]; - if (!App::I->check_license()) - return; - - App::I = new App; App::I->initLog(); App::I->create(); NSRect r = NSMakeRect(0, 0, App::I->width, App::I->height); @@ -497,12 +486,63 @@ LOG("app launched"); App::I->ui_thread_start(); } +- (void)init_dirs +{ + NSArray* paths = NSSearchPathForDirectoriesInDomains(NSPicturesDirectory, NSUserDomainMask, YES); + NSString* docpath = [(NSString*)[paths objectAtIndex:0] stringByAppendingString:@"/PanoPainter"]; + + NSError* err = nil; + + if (![[NSFileManager defaultManager] createDirectoryAtPath:docpath withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating rec path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + App::I->data_path = [docpath cStringUsingEncoding:NSASCIIStringEncoding]; + + NSString* recpath = [docpath stringByAppendingString:@"/rec"]; + App::I->rec_path = [recpath cStringUsingEncoding:NSASCIIStringEncoding]; + if (![[NSFileManager defaultManager] createDirectoryAtPath:recpath withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating rec path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + // brushes + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating brushes path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating brushes thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + // textures + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating patterns path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating patterns thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + // settings + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/settings"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating settings path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } +} @end int main(int argc, const char * argv[]) { install_global_handlers(); + + App::I = new App; + + if (!App::I->check_license()) + return 0; + AppOSX* app = [AppOSX sharedApplication]; + App::I->osx_app = app; [app run]; + return 0; } diff --git a/PanoPainter-OSX/main.h b/PanoPainter-OSX/main.h index 2986dec..61ddc51 100644 --- a/PanoPainter-OSX/main.h +++ b/PanoPainter-OSX/main.h @@ -31,3 +31,12 @@ - (std::string)clipboard_get_string; - (bool)clipboard_set_string:(const std::string&)s; @end + +@interface AppOSX : NSApplication +{ + Window* window; + Controller* controller; + View* view; +} +- (void)init_dirs; +@end diff --git a/PanoPainter/GameViewController.h b/PanoPainter/GameViewController.h index 282adeb..aeaa846 100644 --- a/PanoPainter/GameViewController.h +++ b/PanoPainter/GameViewController.h @@ -21,7 +21,7 @@ > { @public GameView* glview; -@public CADisplayLink *displayLink; +@public EAGLContext* context; } - (void)display_file:(std::string)filename; - (void)reset_touch; @@ -35,4 +35,5 @@ - (void)share_file:(NSString*)file_path; - (std::string)clipboard_get_string; - (bool)clipboard_set_string:(const std::string&)s; +- (void)init_dirs; @end diff --git a/PanoPainter/GameViewController.m b/PanoPainter/GameViewController.m index d1e2d3a..9dd5ea6 100644 --- a/PanoPainter/GameViewController.m +++ b/PanoPainter/GameViewController.m @@ -24,12 +24,6 @@ std::condition_variable render_cv; @implementation GameImagePicker @end -@interface GameViewController () { - NSLock* gl_lock; -} -@property (strong, nonatomic) EAGLContext *context; -@end - //std::map< bool pen_down = false; int t_count = 0; @@ -59,25 +53,18 @@ std::recursive_mutex lock_mutex; - (void)async_lock { lock_mutex.lock(); -// if (lock_thread != [NSThread currentThread] || lock_count == 0) -// [gl_lock lock]; -// lock_thread = [NSThread currentThread]; -// lock_count++; - [EAGLContext setCurrentContext:self.context]; + [EAGLContext setCurrentContext:context]; GameView* view = (GameView*)self.view; [view bindDrawable]; } - (void)async_unlock { -// lock_count--; -// if (lock_count == 0) -// [gl_lock unlock]; lock_mutex.unlock(); } - (void)async_swap { - [self.context presentRenderbuffer:GL_FRAMEBUFFER]; - [self->glview display]; + [context presentRenderbuffer:GL_FRAMEBUFFER]; + [glview display]; } - (void)share_file:(NSString *)file_path @@ -109,6 +96,44 @@ std::recursive_mutex lock_mutex; return self; } +- (void)init_dirs +{ + NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString* docpath = (NSString*)[paths objectAtIndex:0]; + App::I->data_path = [docpath cStringUsingEncoding:NSASCIIStringEncoding]; + + NSError* err = nil; + + NSString* recpath = [docpath stringByAppendingString:@"/rec"]; + App::I->rec_path = [recpath cStringUsingEncoding:NSASCIIStringEncoding]; + if (![[NSFileManager defaultManager] createDirectoryAtPath:recpath withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating rec path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + // brushes + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating brushes path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating brushes thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + // patterns + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating patterns path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating patterns thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } + // settings + if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/settings"] withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating settings path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); + } +} - (void)pick_photo:(std::function) callback { @@ -393,20 +418,18 @@ std::set ignored_touch; { [super viewDidLoad]; App::I = new App; - App::I->initLog(); App::I->ios_view = self; + App::I->initLog(); //self.preferredFramesPerSecond = 60; - self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; + context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3]; - if (!self.context) { + if (!context) { NSLog(@"Failed to create ES context"); } - gl_lock = [[NSLock alloc] init]; - GameView *view = (GameView *)self.view; - view.context = self.context; + view.context = context; view.drawableDepthFormat = GLKViewDrawableDepthFormat24; view.enableSetNeedsDisplay = NO; glview = view; diff --git a/src/app.cpp b/src/app.cpp index 72a380b..c7e906a 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -143,82 +143,9 @@ void App::initAssets() void App::initLog() { #if defined(__IOS__) - NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString* docpath = (NSString*)[paths objectAtIndex:0]; - data_path = [docpath cStringUsingEncoding:NSASCIIStringEncoding]; - - NSError* err = nil; - - NSString* recpath = [docpath stringByAppendingString:@"/rec"]; - rec_path = [recpath cStringUsingEncoding:NSASCIIStringEncoding]; - if (![[NSFileManager defaultManager] createDirectoryAtPath:recpath withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating rec path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - // brushes - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating brushes path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating brushes thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - // patterns - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating patterns path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating patterns thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - // settings - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/settings"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating settings path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } + [ios_view init_dirs]; #elif defined(__OSX__) - NSArray* paths = NSSearchPathForDirectoriesInDomains(NSPicturesDirectory, NSUserDomainMask, YES); - NSString* docpath = [(NSString*)[paths objectAtIndex:0] stringByAppendingString:@"/PanoPainter"]; - - NSError* err = nil; - - if (![[NSFileManager defaultManager] createDirectoryAtPath:docpath withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating rec path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - data_path = [docpath cStringUsingEncoding:NSASCIIStringEncoding]; - - NSString* recpath = [docpath stringByAppendingString:@"/rec"]; - rec_path = [recpath cStringUsingEncoding:NSASCIIStringEncoding]; - if (![[NSFileManager defaultManager] createDirectoryAtPath:recpath withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating rec path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - // brushes - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating brushes path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/brushes/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating brushes thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - // textures - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating patterns path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/patterns/thumbs"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating patterns thumbs path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } - // settings - if (![[NSFileManager defaultManager] createDirectoryAtPath:[docpath stringByAppendingString:@"/settings"] withIntermediateDirectories:YES attributes:nil error:&err]) - { - LOG("error creating settings path: %s", [[err localizedDescription] cStringUsingEncoding:NSASCIIStringEncoding]); - } + [osx_app init_dirs]; #elif defined(_WIN32) //CHAR my_documents[MAX_PATH]; //HRESULT result = SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, my_documents); diff --git a/src/app.h b/src/app.h index e93306f..f02e16e 100644 --- a/src/app.h +++ b/src/app.h @@ -139,6 +139,7 @@ public: #if defined(__OSX__) && defined(__OBJC__) View* osx_view; + AppOSX* osx_app; #endif #ifdef __ANDROID__