move dirs init for iOS and OSX

This commit is contained in:
2019-07-13 16:49:13 +02:00
parent d7386cdfa9
commit 2e5ea079c8
6 changed files with 111 additions and 110 deletions

View File

@@ -417,14 +417,7 @@
} }
@end @end
@interface AppOSX : NSApplication<NSApplicationDelegate> @implementation AppOSX
{
Window* window;
Controller* controller;
View* view;
NSString* file2open;
}
@end @implementation AppOSX
- (instancetype)init - (instancetype)init
{ {
self = [super init]; self = [super init];
@@ -458,10 +451,6 @@
// Do some additional configuration if needed here // Do some additional configuration if needed here
[[BITHockeyManager sharedHockeyManager] startManager]; [[BITHockeyManager sharedHockeyManager] startManager];
if (!App::I->check_license())
return;
App::I = new App;
App::I->initLog(); App::I->initLog();
App::I->create(); App::I->create();
NSRect r = NSMakeRect(0, 0, App::I->width, App::I->height); NSRect r = NSMakeRect(0, 0, App::I->width, App::I->height);
@@ -497,12 +486,63 @@
LOG("app launched"); LOG("app launched");
App::I->ui_thread_start(); 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 @end
int main(int argc, const char * argv[]) int main(int argc, const char * argv[])
{ {
install_global_handlers(); install_global_handlers();
App::I = new App;
if (!App::I->check_license())
return 0;
AppOSX* app = [AppOSX sharedApplication]; AppOSX* app = [AppOSX sharedApplication];
App::I->osx_app = app;
[app run]; [app run];
return 0; return 0;
} }

View File

@@ -31,3 +31,12 @@
- (std::string)clipboard_get_string; - (std::string)clipboard_get_string;
- (bool)clipboard_set_string:(const std::string&)s; - (bool)clipboard_set_string:(const std::string&)s;
@end @end
@interface AppOSX : NSApplication<NSApplicationDelegate>
{
Window* window;
Controller* controller;
View* view;
}
- (void)init_dirs;
@end

View File

@@ -21,7 +21,7 @@
> >
{ {
@public GameView* glview; @public GameView* glview;
@public CADisplayLink *displayLink; @public EAGLContext* context;
} }
- (void)display_file:(std::string)filename; - (void)display_file:(std::string)filename;
- (void)reset_touch; - (void)reset_touch;
@@ -35,4 +35,5 @@
- (void)share_file:(NSString*)file_path; - (void)share_file:(NSString*)file_path;
- (std::string)clipboard_get_string; - (std::string)clipboard_get_string;
- (bool)clipboard_set_string:(const std::string&)s; - (bool)clipboard_set_string:(const std::string&)s;
- (void)init_dirs;
@end @end

View File

@@ -24,12 +24,6 @@ std::condition_variable render_cv;
@implementation GameImagePicker @implementation GameImagePicker
@end @end
@interface GameViewController () {
NSLock* gl_lock;
}
@property (strong, nonatomic) EAGLContext *context;
@end
//std::map< //std::map<
bool pen_down = false; bool pen_down = false;
int t_count = 0; int t_count = 0;
@@ -59,25 +53,18 @@ std::recursive_mutex lock_mutex;
- (void)async_lock - (void)async_lock
{ {
lock_mutex.lock(); lock_mutex.lock();
// if (lock_thread != [NSThread currentThread] || lock_count == 0) [EAGLContext setCurrentContext:context];
// [gl_lock lock];
// lock_thread = [NSThread currentThread];
// lock_count++;
[EAGLContext setCurrentContext:self.context];
GameView* view = (GameView*)self.view; GameView* view = (GameView*)self.view;
[view bindDrawable]; [view bindDrawable];
} }
- (void)async_unlock - (void)async_unlock
{ {
// lock_count--;
// if (lock_count == 0)
// [gl_lock unlock];
lock_mutex.unlock(); lock_mutex.unlock();
} }
- (void)async_swap - (void)async_swap
{ {
[self.context presentRenderbuffer:GL_FRAMEBUFFER]; [context presentRenderbuffer:GL_FRAMEBUFFER];
[self->glview display]; [glview display];
} }
- (void)share_file:(NSString *)file_path - (void)share_file:(NSString *)file_path
@@ -109,6 +96,44 @@ std::recursive_mutex lock_mutex;
return self; 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<void(std::string)>) callback - (void)pick_photo:(std::function<void(std::string)>) callback
{ {
@@ -393,20 +418,18 @@ std::set<UITouch*> ignored_touch;
{ {
[super viewDidLoad]; [super viewDidLoad];
App::I = new App; App::I = new App;
App::I->initLog();
App::I->ios_view = self; App::I->ios_view = self;
App::I->initLog();
//self.preferredFramesPerSecond = 60; //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"); NSLog(@"Failed to create ES context");
} }
gl_lock = [[NSLock alloc] init];
GameView *view = (GameView *)self.view; GameView *view = (GameView *)self.view;
view.context = self.context; view.context = context;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24; view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
view.enableSetNeedsDisplay = NO; view.enableSetNeedsDisplay = NO;
glview = view; glview = view;

View File

@@ -143,82 +143,9 @@ void App::initAssets()
void App::initLog() void App::initLog()
{ {
#if defined(__IOS__) #if defined(__IOS__)
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); [ios_view init_dirs];
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]);
}
#elif defined(__OSX__) #elif defined(__OSX__)
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSPicturesDirectory, NSUserDomainMask, YES); [osx_app init_dirs];
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]);
}
#elif defined(_WIN32) #elif defined(_WIN32)
//CHAR my_documents[MAX_PATH]; //CHAR my_documents[MAX_PATH];
//HRESULT result = SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, my_documents); //HRESULT result = SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, my_documents);

View File

@@ -139,6 +139,7 @@ public:
#if defined(__OSX__) && defined(__OBJC__) #if defined(__OSX__) && defined(__OBJC__)
View* osx_view; View* osx_view;
AppOSX* osx_app;
#endif #endif
#ifdef __ANDROID__ #ifdef __ANDROID__