| @@ -35,7 +35,11 @@ endif | |||||
| endif | endif | ||||
| # -------------------------------------------------------------- | |||||
| # Check for X11+OpenGL dependencies (unless headless build) | |||||
| ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) | ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) | ||||
| ifneq ($(HEADLESS),true) | |||||
| ifneq ($(HAVE_OPENGL),true) | ifneq ($(HAVE_OPENGL),true) | ||||
| $(error X11 dependency not installed/available) | $(error X11 dependency not installed/available) | ||||
| @@ -50,6 +54,7 @@ ifneq ($(HAVE_XRANDR),true) | |||||
| $(warning Xrandr dependency not installed/available) | $(warning Xrandr dependency not installed/available) | ||||
| endif | endif | ||||
| endif | |||||
| endif | endif | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -63,7 +68,9 @@ ifneq ($(SYSDEPS),true) | |||||
| endif | endif | ||||
| dgl: | dgl: | ||||
| ifneq ($(HEADLESS),true) | |||||
| $(MAKE) -C dpf/dgl opengl USE_NANOVG_FBO=true | $(MAKE) -C dpf/dgl opengl USE_NANOVG_FBO=true | ||||
| endif | |||||
| plugins: deps | plugins: deps | ||||
| $(MAKE) all -C plugins | $(MAKE) all -C plugins | ||||
| @@ -136,15 +136,24 @@ $(DEP_PATH)/libarchive-3.4.3/.stamp-patched: | |||||
| sed -i -e "s/TARGETS archive archive_static/TARGETS archive_static/" $(DEP_PATH)/libarchive-3.4.3/libarchive/CMakeLists.txt | sed -i -e "s/TARGETS archive archive_static/TARGETS archive_static/" $(DEP_PATH)/libarchive-3.4.3/libarchive/CMakeLists.txt | ||||
| touch $@ | touch $@ | ||||
| ifeq ($(MACOS),true) | |||||
| # skip libsamplerate tests | |||||
| $(DEP_PATH)/lib/libsamplerate.a: $(DEP_PATH)/libsamplerate-0.1.9/.stamp-patched | |||||
| $(DEP_PATH)/libsamplerate-0.1.9/.stamp-patched: | |||||
| $(DEP_MAKE) -C $(DEP_PATH) libsamplerate-0.1.9 | |||||
| sed -i -e "s/src doc examples tests/src/" $(DEP_PATH)/libsamplerate-0.1.9/Makefile.in | |||||
| touch $@ | |||||
| # zstd cmake is borked, see https://github.com/facebook/zstd/issues/1401 | # zstd cmake is borked, see https://github.com/facebook/zstd/issues/1401 | ||||
| # zstd also fails to build on old systems, patch that too | |||||
| $(DEP_PATH)/lib/libzstd.a: $(DEP_PATH)/zstd-1.4.5/.stamp-patched | $(DEP_PATH)/lib/libzstd.a: $(DEP_PATH)/zstd-1.4.5/.stamp-patched | ||||
| $(DEP_PATH)/zstd-1.4.5/.stamp-patched: | $(DEP_PATH)/zstd-1.4.5/.stamp-patched: | ||||
| $(DEP_MAKE) -C $(DEP_PATH) zstd-1.4.5 | $(DEP_MAKE) -C $(DEP_PATH) zstd-1.4.5 | ||||
| sed -i -e "56,66d" $(DEP_PATH)/zstd-1.4.5/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake | sed -i -e "56,66d" $(DEP_PATH)/zstd-1.4.5/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake | ||||
| sed -i -e "146,175d" $(DEP_PATH)/zstd-1.4.5/programs/util.c | |||||
| sed -i -e "142,144d" $(DEP_PATH)/zstd-1.4.5/programs/util.c | |||||
| touch $@ | touch $@ | ||||
| endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Build targets | # Build targets | ||||
| @@ -0,0 +1,41 @@ | |||||
| /* | |||||
| * DISTRHO Cardinal Plugin | |||||
| * Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or | |||||
| * modify it under the terms of the GNU General Public License as | |||||
| * published by the Free Software Foundation; either version 3 of | |||||
| * the License, or any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * For a full copy of the GNU General Public License see the LICENSE file. | |||||
| */ | |||||
| // this file matches the top of `OpenGL.hpp` provided by DPF | |||||
| #pragma once | |||||
| #ifdef HEADLESS | |||||
| # define GL_COLOR_BUFFER_BIT 0 | |||||
| # define GL_DEPTH_BUFFER_BIT 0 | |||||
| # define GL_STENCIL_BUFFER_BIT 0 | |||||
| # define GL_PROJECTION 0 | |||||
| # define GL_TRIANGLES 0 | |||||
| static inline void glBegin(int) {} | |||||
| static inline void glEnd() {} | |||||
| static inline void glColor3f(float, float, float) {} | |||||
| static inline void glVertex3f(float, float, float) {} | |||||
| static inline void glClear(int) {} | |||||
| static inline void glClearColor(double, double, double, double) {} | |||||
| static inline void glLoadIdentity() {} | |||||
| static inline void glMatrixMode(int) {} | |||||
| static inline void glOrtho(double, double, double, double, double, double) {} | |||||
| static inline void glViewport(double, double, double, double) {} | |||||
| typedef unsigned int GLuint; | |||||
| #else | |||||
| # include_next <GL/gl.h> | |||||
| #endif | |||||
| @@ -78,20 +78,22 @@ | |||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
| // OpenGL includes | // OpenGL includes | ||||
| #ifdef DISTRHO_OS_MAC | |||||
| # ifdef DGL_USE_OPENGL3 | |||||
| # include <OpenGL/gl3.h> | |||||
| # include <OpenGL/gl3ext.h> | |||||
| #ifndef HEADLESS | |||||
| # ifdef DISTRHO_OS_MAC | |||||
| # ifdef DGL_USE_OPENGL3 | |||||
| # include <OpenGL/gl3.h> | |||||
| # include <OpenGL/gl3ext.h> | |||||
| # else | |||||
| # include <OpenGL/gl.h> | |||||
| # endif | |||||
| # else | # else | ||||
| # include <OpenGL/gl.h> | |||||
| # endif | |||||
| #else | |||||
| # ifdef DISTRHO_OS_WINDOWS | |||||
| # define GL_GLEXT_PROTOTYPES | |||||
| # endif | |||||
| # ifndef __GLEW_H__ | |||||
| # include <GL/gl.h> | |||||
| # include <GL/glext.h> | |||||
| # ifdef DISTRHO_OS_WINDOWS | |||||
| # define GL_GLEXT_PROTOTYPES | |||||
| # endif | |||||
| # ifndef __GLEW_H__ | |||||
| # include <GL/gl.h> | |||||
| # include <GL/glext.h> | |||||
| # endif | |||||
| # endif | # endif | ||||
| #endif | #endif | ||||
| @@ -25,7 +25,7 @@ | |||||
| static inline | static inline | ||||
| void __builtin_ia32_pause() | void __builtin_ia32_pause() | ||||
| { | { | ||||
| __asm__ __volatile__("isb\n"); | |||||
| // __asm__ __volatile__("isb\n"); | |||||
| } | } | ||||
| static inline | static inline | ||||
| @@ -286,6 +286,10 @@ BASE_FLAGS += -I../include/mingw-compat | |||||
| BASE_FLAGS += -I../include/mingw-std-threads | BASE_FLAGS += -I../include/mingw-std-threads | ||||
| endif | endif | ||||
| ifeq ($(HEADLESS),true) | |||||
| BASE_FLAGS += -DHEADLESS | |||||
| endif | |||||
| ifeq ($(WITH_LTO),true) | ifeq ($(WITH_LTO),true) | ||||
| BASE_FLAGS += -fno-strict-aliasing -flto | BASE_FLAGS += -fno-strict-aliasing -flto | ||||
| endif | endif | ||||
| @@ -46,7 +46,7 @@ namespace plugin { | |||||
| void initStaticPlugins(); | void initStaticPlugins(); | ||||
| void destroyStaticPlugins(); | void destroyStaticPlugins(); | ||||
| } | } | ||||
| #ifdef __MOD_DEVICES__ | |||||
| #if defined(__MOD_DEVICES__) && !defined(HEADLESS) | |||||
| namespace window { | namespace window { | ||||
| void WindowInit(Window* window, DISTRHO_NAMESPACE::Plugin* plugin); | void WindowInit(Window* window, DISTRHO_NAMESPACE::Plugin* plugin); | ||||
| } | } | ||||
| @@ -70,6 +70,9 @@ struct Initializer { | |||||
| settings::isPlugin = true; | settings::isPlugin = true; | ||||
| settings::skipLoadOnLaunch = true; | settings::skipLoadOnLaunch = true; | ||||
| settings::showTipsOnLaunch = false; | settings::showTipsOnLaunch = false; | ||||
| #ifdef HEADLESS | |||||
| settings::headless = true; | |||||
| #endif | |||||
| #ifdef __MOD_DEVICES__ | #ifdef __MOD_DEVICES__ | ||||
| settings::threadCount = 3; | settings::threadCount = 3; | ||||
| #else | #else | ||||
| @@ -244,7 +247,7 @@ public: | |||||
| context->patch->loadTemplate(); | context->patch->loadTemplate(); | ||||
| context->engine->startFallbackThread(); | context->engine->startFallbackThread(); | ||||
| #ifdef __MOD_DEVICES__ | |||||
| #if defined(__MOD_DEVICES__) && !defined(HEADLESS) | |||||
| context->window = new rack::window::Window; | context->window = new rack::window::Window; | ||||
| rack::window::WindowInit(context->window, this); | rack::window::WindowInit(context->window, this); | ||||
| /* | /* | ||||
| @@ -260,17 +263,10 @@ public: | |||||
| { | { | ||||
| const MutexLocker cml(context->mutex); | const MutexLocker cml(context->mutex); | ||||
| rack::contextSet(context); | rack::contextSet(context); | ||||
| #ifdef __MOD_DEVICES__ | |||||
| #if defined(__MOD_DEVICES__) && !defined(HEADLESS) | |||||
| delete context->window; | delete context->window; | ||||
| context->window = nullptr; | context->window = nullptr; | ||||
| #endif | #endif | ||||
| /* | |||||
| delete context->scene; | |||||
| context->scene = nullptr; | |||||
| delete context->event; | |||||
| context->event = nullptr; | |||||
| */ | |||||
| } | } | ||||
| delete context; | delete context; | ||||
| @@ -22,7 +22,14 @@ | |||||
| #define DISTRHO_PLUGIN_NAME "Cardinal" | #define DISTRHO_PLUGIN_NAME "Cardinal" | ||||
| #define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/cardinal" | #define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/cardinal" | ||||
| #ifdef HEADLESS | |||||
| #define DISTRHO_PLUGIN_HAS_UI 0 | |||||
| #else | |||||
| #define DISTRHO_PLUGIN_HAS_UI 1 | #define DISTRHO_PLUGIN_HAS_UI 1 | ||||
| #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 | |||||
| #define DISTRHO_UI_USE_NANOVG 1 | |||||
| #define DISTRHO_UI_USER_RESIZABLE 1 | |||||
| #endif | |||||
| #define DISTRHO_PLUGIN_NUM_INPUTS 2 | #define DISTRHO_PLUGIN_NUM_INPUTS 2 | ||||
| #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | ||||
| #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 | #define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1 | ||||
| @@ -30,11 +37,8 @@ | |||||
| #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 | #define DISTRHO_PLUGIN_WANT_FULL_STATE 1 | ||||
| #define DISTRHO_PLUGIN_WANT_STATE 1 | #define DISTRHO_PLUGIN_WANT_STATE 1 | ||||
| #define DISTRHO_PLUGIN_WANT_TIMEPOS 1 | #define DISTRHO_PLUGIN_WANT_TIMEPOS 1 | ||||
| #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 | |||||
| // #define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:AnalyserPlugin" | // #define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:AnalyserPlugin" | ||||
| // #define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Analyzer" | // #define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Analyzer" | ||||
| #define DISTRHO_UI_USE_NANOVG 1 | |||||
| #define DISTRHO_UI_USER_RESIZABLE 1 | |||||
| enum Parameters { | enum Parameters { | ||||
| kParameterCount | kParameterCount | ||||
| @@ -28,14 +28,17 @@ FILES_DSP = \ | |||||
| override/library.cpp \ | override/library.cpp \ | ||||
| override/network.cpp | override/network.cpp | ||||
| # override/osdialog.cpp | |||||
| # override/RemoteNanoVG.cpp | |||||
| # override/RemoteWindow.cpp | |||||
| ifeq ($(HEADLESS),true) | |||||
| FILES_DSP += \ | |||||
| override/osdialog.cpp \ | |||||
| override/RemoteNanoVG.cpp \ | |||||
| override/RemoteWindow.cpp | |||||
| else | |||||
| FILES_UI = \ | FILES_UI = \ | ||||
| CardinalUI.cpp \ | CardinalUI.cpp \ | ||||
| override/MenuBar.cpp \ | override/MenuBar.cpp \ | ||||
| override/Window.cpp | override/Window.cpp | ||||
| endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Import base definitions | # Import base definitions | ||||
| @@ -143,6 +146,10 @@ BASE_FLAGS += -I../include/mingw-compat | |||||
| BASE_FLAGS += -I../include/mingw-std-threads | BASE_FLAGS += -I../include/mingw-std-threads | ||||
| endif | endif | ||||
| ifeq ($(HEADLESS),true) | |||||
| BASE_FLAGS += -DHEADLESS | |||||
| endif | |||||
| ifeq ($(WITH_LTO),true) | ifeq ($(WITH_LTO),true) | ||||
| BASE_FLAGS += -fno-strict-aliasing -flto | BASE_FLAGS += -fno-strict-aliasing -flto | ||||
| endif | endif | ||||
| @@ -15,16 +15,23 @@ | |||||
| * For a full copy of the GNU General Public License see the LICENSE file. | * For a full copy of the GNU General Public License see the LICENSE file. | ||||
| */ | */ | ||||
| #ifndef HEADLESS | |||||
| #include "OpenGL.hpp" | #include "OpenGL.hpp" | ||||
| #endif | |||||
| #include "src/nanovg/nanovg.h" | #include "src/nanovg/nanovg.h" | ||||
| #define NANOVG_GL2_IMPLEMENTATION | |||||
| // #define NANOVG_GLES2_IMPLEMENTATION | |||||
| #include "src/nanovg/nanovg_gl.h" | |||||
| #define NANOVG_FBO_VALID 1 | |||||
| #include "src/nanovg/nanovg_gl_utils.h" | |||||
| #ifdef HEADLESS | |||||
| struct NVGLUframebuffer; | |||||
| void nvgluBindFramebuffer(NVGLUframebuffer* fb) {} | |||||
| NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int w, int h, int imageFlags) { return nullptr; } | |||||
| void nvgluDeleteFramebuffer(NVGLUframebuffer* fb) {} | |||||
| #else | |||||
| # define NANOVG_GLES2_IMPLEMENTATION | |||||
| # define NANOVG_FBO_VALID 1 | |||||
| # include "src/nanovg/nanovg_gl.h" | |||||
| # include "src/nanovg/nanovg_gl_utils.h" | |||||
| #endif | |||||
| #if defined(__GNUC__) && (__GNUC__ >= 6) | #if defined(__GNUC__) && (__GNUC__ >= 6) | ||||
| # pragma GCC diagnostic push | # pragma GCC diagnostic push | ||||
| @@ -38,18 +45,6 @@ | |||||
| # pragma GCC diagnostic pop | # pragma GCC diagnostic pop | ||||
| #endif | #endif | ||||
| // typedef struct NVGLUframebuffer { | |||||
| // NVGcontext* ctx; | |||||
| // GLuint fbo; | |||||
| // GLuint rbo; | |||||
| // GLuint texture; | |||||
| // int image; | |||||
| // } NVGLUframebuffer; | |||||
| // | |||||
| // void nvgluBindFramebuffer(NVGLUframebuffer* fb) {} | |||||
| // NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int w, int h, int imageFlags) { return nullptr; } | |||||
| // void nvgluDeleteFramebuffer(NVGLUframebuffer* fb) {} | |||||
| #define GLFWAPI | #define GLFWAPI | ||||
| extern "C" { | extern "C" { | ||||
| @@ -63,5 +58,7 @@ GLFWAPI int glfwGetKeyScancode(int key) { return 0; } | |||||
| } | } | ||||
| #define STB_IMAGE_WRITE_IMPLEMENTATION | |||||
| #include "../src/Rack/dep/glfw/deps/stb_image_write.h" | |||||
| #ifndef HEADLESS | |||||
| # define STB_IMAGE_WRITE_IMPLEMENTATION | |||||
| # include "../src/Rack/dep/glfw/deps/stb_image_write.h" | |||||
| #endif | |||||
| @@ -25,15 +25,10 @@ | |||||
| * the License, or (at your option) any later version. | * the License, or (at your option) any later version. | ||||
| */ | */ | ||||
| #define NANOVG_GL2 1 | |||||
| #include <map> | #include <map> | ||||
| #include <queue> | #include <queue> | ||||
| #include <thread> | #include <thread> | ||||
| #include "../src/Rack/dep/glfw/deps/stb_image_write.h" | |||||
| #include <GL/osmesa.h> | |||||
| #include <window/Window.hpp> | #include <window/Window.hpp> | ||||
| #include <asset.hpp> | #include <asset.hpp> | ||||
| #include <widget/Widget.hpp> | #include <widget/Widget.hpp> | ||||
| @@ -49,9 +44,24 @@ | |||||
| #endif | #endif | ||||
| #include "DistrhoPlugin.hpp" | #include "DistrhoPlugin.hpp" | ||||
| #include "extra/Thread.hpp" | |||||
| #include "../WindowParameters.hpp" | #include "../WindowParameters.hpp" | ||||
| #ifndef HEADLESS | |||||
| # include "../src/Rack/dep/glfw/deps/stb_image_write.h" | |||||
| # include "extra/Thread.hpp" | |||||
| # include <GL/osmesa.h> | |||||
| #endif | |||||
| #ifdef HEADLESS | |||||
| namespace rack { | |||||
| namespace app { | |||||
| widget::Widget* createMenuBar() { return new widget::Widget; } | |||||
| } | |||||
| } | |||||
| #endif | |||||
| namespace rack { | namespace rack { | ||||
| namespace window { | namespace window { | ||||
| @@ -103,14 +113,20 @@ struct WindowParams { | |||||
| float rackBrightness = 1.0f; | float rackBrightness = 1.0f; | ||||
| }; | }; | ||||
| struct Window::Internal : public Thread { | |||||
| struct Window::Internal | |||||
| #ifndef HEADLESS | |||||
| : public Thread | |||||
| #endif | |||||
| { | |||||
| DISTRHO_NAMESPACE::Plugin* plugin = nullptr; | DISTRHO_NAMESPACE::Plugin* plugin = nullptr; | ||||
| DISTRHO_NAMESPACE::WindowParameters params; | DISTRHO_NAMESPACE::WindowParameters params; | ||||
| DISTRHO_NAMESPACE::WindowParametersCallback* callback = nullptr; | DISTRHO_NAMESPACE::WindowParametersCallback* callback = nullptr; | ||||
| Context* context = nullptr; | Context* context = nullptr; | ||||
| Window* self = nullptr; | Window* self = nullptr; | ||||
| #ifndef HEADLESS | |||||
| OSMesaContext mesa = nullptr; | OSMesaContext mesa = nullptr; | ||||
| GLubyte* mesaBuffer = nullptr; | GLubyte* mesaBuffer = nullptr; | ||||
| #endif | |||||
| math::Vec size = minWindowSize; | math::Vec size = minWindowSize; | ||||
| std::string lastWindowTitle; | std::string lastWindowTitle; | ||||
| @@ -127,6 +143,7 @@ struct Window::Internal : public Thread { | |||||
| bool fbDirtyOnSubpixelChange = true; | bool fbDirtyOnSubpixelChange = true; | ||||
| #ifndef HEADLESS | |||||
| void run() override { | void run() override { | ||||
| self->run(); | self->run(); | ||||
| int i=0; | int i=0; | ||||
| @@ -146,6 +163,7 @@ struct Window::Internal : public Thread { | |||||
| } | } | ||||
| d_stdout("thread quit"); | d_stdout("thread quit"); | ||||
| } | } | ||||
| #endif | |||||
| }; | }; | ||||
| Window::Window() { | Window::Window() { | ||||
| @@ -154,6 +172,7 @@ Window::Window() { | |||||
| internal->self = this; | internal->self = this; | ||||
| } | } | ||||
| #ifndef HEADLESS | |||||
| static void flipBitmap(uint8_t* pixels, int width, int height, int depth) { | static void flipBitmap(uint8_t* pixels, int width, int height, int depth) { | ||||
| for (int y = 0; y < height / 2; y++) { | for (int y = 0; y < height / 2; y++) { | ||||
| int flipY = height - y - 1; | int flipY = height - y - 1; | ||||
| @@ -163,11 +182,13 @@ static void flipBitmap(uint8_t* pixels, int width, int height, int depth) { | |||||
| std::memcpy(&pixels[flipY * width * depth], tmp, width * depth); | std::memcpy(&pixels[flipY * width * depth], tmp, width * depth); | ||||
| } | } | ||||
| } | } | ||||
| #endif | |||||
| void WindowInit(Window* const window, DISTRHO_NAMESPACE::Plugin* const plugin) | void WindowInit(Window* const window, DISTRHO_NAMESPACE::Plugin* const plugin) | ||||
| { | { | ||||
| window->internal->plugin = plugin; | window->internal->plugin = plugin; | ||||
| #ifndef HEADLESS | |||||
| window->internal->mesa = OSMesaCreateContextExt(OSMESA_RGBA, 24, 8, 0, nullptr); | window->internal->mesa = OSMesaCreateContextExt(OSMESA_RGBA, 24, 8, 0, nullptr); | ||||
| DISTRHO_SAFE_ASSERT_RETURN(window->internal->mesa != nullptr,); | DISTRHO_SAFE_ASSERT_RETURN(window->internal->mesa != nullptr,); | ||||
| @@ -196,6 +217,7 @@ void WindowInit(Window* const window, DISTRHO_NAMESPACE::Plugin* const plugin) | |||||
| // window->vg = nvgCreateGLES2(nvgFlags); | // window->vg = nvgCreateGLES2(nvgFlags); | ||||
| // window->fbVg = nvgCreateSharedGLES2(window->vg, nvgFlags); | // window->fbVg = nvgCreateSharedGLES2(window->vg, nvgFlags); | ||||
| // #endif | // #endif | ||||
| #endif | |||||
| // Load default Blendish font | // Load default Blendish font | ||||
| window->uiFont = window->loadFont(asset::system("res/fonts/DejaVuSans.ttf")); | window->uiFont = window->loadFont(asset::system("res/fonts/DejaVuSans.ttf")); | ||||
| @@ -210,6 +232,7 @@ void WindowInit(Window* const window, DISTRHO_NAMESPACE::Plugin* const plugin) | |||||
| APP->scene->onContextCreate(e); | APP->scene->onContextCreate(e); | ||||
| } | } | ||||
| #ifndef HEADLESS | |||||
| d_stdout("all good with mesa and GL? %d | %p %p %p", ok, window->internal->mesa, window->vg, window->fbVg); | d_stdout("all good with mesa and GL? %d | %p %p %p", ok, window->internal->mesa, window->vg, window->fbVg); | ||||
| // window->internal->startThread(); | // window->internal->startThread(); | ||||
| @@ -277,6 +300,7 @@ void WindowInit(Window* const window, DISTRHO_NAMESPACE::Plugin* const plugin) | |||||
| delete[] pixels; | delete[] pixels; | ||||
| d_stdout("idle - after png"); | d_stdout("idle - after png"); | ||||
| #endif | |||||
| } | } | ||||
| void WindowMods(Window* const window, const int mods) | void WindowMods(Window* const window, const int mods) | ||||
| @@ -296,6 +320,7 @@ Window::~Window() { | |||||
| internal->fontCache.clear(); | internal->fontCache.clear(); | ||||
| internal->imageCache.clear(); | internal->imageCache.clear(); | ||||
| #ifndef HEADLESS | |||||
| // #if defined NANOVG_GL2 | // #if defined NANOVG_GL2 | ||||
| nvgDeleteGL2(vg); | nvgDeleteGL2(vg); | ||||
| nvgDeleteGL2(fbVg); | nvgDeleteGL2(fbVg); | ||||
| @@ -310,6 +335,8 @@ Window::~Window() { | |||||
| OSMesaDestroyContext(internal->mesa); | OSMesaDestroyContext(internal->mesa); | ||||
| delete[] internal->mesaBuffer; | delete[] internal->mesaBuffer; | ||||
| #endif | |||||
| delete internal; | delete internal; | ||||
| } | } | ||||
| @@ -15,6 +15,16 @@ | |||||
| * For a full copy of the GNU General Public License see the LICENSE file. | * For a full copy of the GNU General Public License see the LICENSE file. | ||||
| */ | */ | ||||
| /** | |||||
| * This file is an edited version of VCVRack's common.cpp | |||||
| * Copyright (C) 2016-2021 VCV. | |||||
| * | |||||
| * This program is free software: you can redistribute it and/or | |||||
| * modify it under the terms of the GNU General Public License as | |||||
| * published by the Free Software Foundation; either version 3 of | |||||
| * the License, or (at your option) any later version. | |||||
| */ | |||||
| #include <common.hpp> | #include <common.hpp> | ||||
| #include <string.hpp> | #include <string.hpp> | ||||
| @@ -8,6 +8,16 @@ | |||||
| #include "DistrhoPluginUtils.hpp" | #include "DistrhoPluginUtils.hpp" | ||||
| /** | |||||
| * This file is an edited version of VCVRack's context.cpp | |||||
| * Copyright (C) 2016-2021 VCV. | |||||
| * | |||||
| * This program is free software: you can redistribute it and/or | |||||
| * modify it under the terms of the GNU General Public License as | |||||
| * published by the Free Software Foundation; either version 3 of | |||||
| * the License, or (at your option) any later version. | |||||
| */ | |||||
| namespace rack { | namespace rack { | ||||
| @@ -15,7 +15,7 @@ | |||||
| * For a full copy of the GNU General Public License see the LICENSE file. | * For a full copy of the GNU General Public License see the LICENSE file. | ||||
| */ | */ | ||||
| #include "OpenGL.hpp" | |||||
| #include <cstdio> | |||||
| // fix blendish build, missing symbol in debug mode | // fix blendish build, missing symbol in debug mode | ||||
| #ifdef DEBUG | #ifdef DEBUG | ||||