add linux support

This commit is contained in:
2019-10-03 22:45:01 +02:00
parent c26a4d1e86
commit 96f8cb72d2
9 changed files with 310 additions and 11 deletions

View File

@@ -23,6 +23,9 @@ void async_lock();
void win32_async_swap();
void async_unlock();
void destroy_window();
#elif __LINUX__
std::string linux_home_path();
int mkpath(const std::string& dir, mode_t mode = DEFFILEMODE);
#endif
App* App::I = nullptr; // singleton
@@ -131,9 +134,10 @@ bool App::request_close()
#ifdef _WIN32
destroy_window();
//PostQuitMessage(0);
#endif
#ifdef __OSX__
#elif __OSX__
[osx_view close];
#elif __LINUX__
glfwSetWindowShouldClose(glfw_window, GLFW_TRUE);
#endif
Canvas::I->m_unsaved = false;
};
@@ -223,6 +227,15 @@ void App::initLog()
if (!PathFileExistsA((data_path + "\\settings").c_str()))
CreateDirectoryA((data_path + "\\settings").c_str(), NULL);
#elif __LINUX__
data_path = linux_home_path() + "/PanoPainter";
mkpath(data_path + "/brushes");
mkpath(data_path + "/brushes/thumbs");
mkpath(data_path + "/patterns");
mkpath(data_path + "/patterns/thumbs");
mkpath(data_path + "/settings");
mkpath(data_path + "/frames");
#endif
// TODO: save this path somewhere in the settings, don't overwrite every start
@@ -452,6 +465,8 @@ void App::async_start()
#elif _WIN32
async_lock();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
#elif __LINUX__
glfwMakeContextCurrent(glfw_window);
#endif
}
@@ -484,6 +499,8 @@ void App::async_swap()
android_async_swap();
#elif _WIN32
win32_async_swap();
#elif __LINUX__
glfwSwapBuffers(glfw_window);
#endif
}
@@ -582,7 +599,7 @@ void App::draw(float dt)
LOG("rec tick");
rec_timer = 0.f;
auto data = new uint8_t[width * height * 4];
auto data = new uint8_t[(int)width * (int)height * 4];
#if __IOS__
[ios_view->glview bindDrawable];
#else
@@ -913,6 +930,9 @@ void App::ui_thread_main()
#ifdef _WIN32
extern void win32_update_fps(int frames);
win32_update_fps(rendered_frames);
#elif __LINUX__
extern void linux_update_fps(int frames);
linux_update_fps(rendered_frames);
#endif
t_fps_counter = 0;
rendered_frames = 0;

View File

@@ -31,6 +31,11 @@
#ifdef __ANDROID__
#include "main.h"
#endif
#ifdef __LINUX__
#include <GLFW/glfw3.h>
#endif
#include "node_panel_grid.h"
#include "node_panel_quick.h"
#include "node_input_box.h"
@@ -147,11 +152,11 @@ public:
#if defined(__IOS__) && defined(__OBJC__)
GameViewController* ios_view;
#endif
#if defined(__OSX__) && defined(__OBJC__)
#elif defined(__OSX__) && defined(__OBJC__)
View* osx_view;
AppOSX* osx_app;
#elif __LINUX__
GLFWwindow* glfw_window;
#endif
#ifdef __ANDROID__

View File

@@ -93,9 +93,7 @@ std::vector<std::string> Asset::list_files(std::string folder, const std::string
std::string abs_path = folder;
if (is_asset)
{
NSString* bundle_path = [[NSBundle mainBundle] resourcePath];
std::string base = [bundle_path cStringUsingEncoding : 1];
abs_path = base + "/" + folder;
abs_path = absolute(folder);
}
DIR *dp;

View File

@@ -7,7 +7,7 @@
#elif __ANDROID__
#define LOG(...) { ((void)__android_log_print(ANDROID_LOG_INFO, "PanoPainterCPP", __VA_ARGS__)); LogRemote::I.log(__VA_ARGS__); }
#define LOGW
#elif _WIN32
#else
#define LOG(M,...) { printf(M"\n", ##__VA_ARGS__); LogRemote::I.log(M, ##__VA_ARGS__); }
#define LOGW(M,...) { wprintf(M"\n", ##__VA_ARGS__); LogRemote::I.log(M, ##__VA_ARGS__); }
#endif

View File

@@ -84,6 +84,25 @@
#define PP_OS "win"
#define __block
#elif __linux__
#ifdef _DEBUG
#define GLAD_DEBUG
#endif
#include <glad/glad.h>
//#include <glad/glad_glx.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#define __LINUX__ 1
#define SHADER_VERSION "#version 150\n"
#define PP_OS "linux"
#define __GL__ 1
#define __block
#define BT_SetTerminate void
#endif
#define SIXPLETTE(I) {I, I, I, I, I, I}