Browse Source

Update DPF and Nekobi

tags/v1.0
falkTX 9 years ago
parent
commit
dfabbb87ce
8 changed files with 67 additions and 32 deletions
  1. +26
    -10
      dpf/dgl/src/Window.cpp
  2. +8
    -8
      dpf/dgl/src/nanovg/stb_image.h
  3. +4
    -2
      dpf/dgl/src/pugl/pugl.h
  4. +16
    -3
      dpf/dgl/src/pugl/pugl_x11.c
  5. +10
    -3
      dpf/distrho/src/DistrhoPluginJack.cpp
  6. +1
    -1
      get-plugins.sh
  7. +1
    -1
      plugins/Nekobi/DistrhoPluginNekobi.cpp
  8. +1
    -4
      plugins/Nekobi/DistrhoUINekobi.hpp

+ 26
- 10
dpf/dgl/src/Window.cpp View File

@@ -264,6 +264,12 @@ struct Window::PrivateData {
fView = nullptr; fView = nullptr;
} }


if (fTitle != nullptr)
{
std::free(fTitle);
fTitle = nullptr;
}

#if defined(DISTRHO_OS_WINDOWS) #if defined(DISTRHO_OS_WINDOWS)
hwnd = 0; hwnd = 0;
#elif defined(DISTRHO_OS_MAC) #elif defined(DISTRHO_OS_MAC)
@@ -677,12 +683,15 @@ struct Window::PrivateData {
fSelf->onDisplayAfter(); fSelf->onDisplayAfter();
} }


void onPuglKeyboard(const bool press, const uint key)
int onPuglKeyboard(const bool press, const uint key)
{ {
DBGp("PUGL: onKeyboard : %i %i\n", press, key); DBGp("PUGL: onKeyboard : %i %i\n", press, key);


if (fModal.childFocus != nullptr) if (fModal.childFocus != nullptr)
return fModal.childFocus->focus();
{
fModal.childFocus->focus();
return 0;
}


Widget::KeyboardEvent ev; Widget::KeyboardEvent ev;
ev.press = press; ev.press = press;
@@ -695,16 +704,21 @@ struct Window::PrivateData {
Widget* const widget(*rit); Widget* const widget(*rit);


if (widget->isVisible() && widget->onKeyboard(ev)) if (widget->isVisible() && widget->onKeyboard(ev))
break;
return 0;
} }

return 1;
} }


void onPuglSpecial(const bool press, const Key key)
int onPuglSpecial(const bool press, const Key key)
{ {
DBGp("PUGL: onSpecial : %i %i\n", press, key); DBGp("PUGL: onSpecial : %i %i\n", press, key);


if (fModal.childFocus != nullptr) if (fModal.childFocus != nullptr)
return fModal.childFocus->focus();
{
fModal.childFocus->focus();
return 0;
}


Widget::SpecialEvent ev; Widget::SpecialEvent ev;
ev.press = press; ev.press = press;
@@ -717,8 +731,10 @@ struct Window::PrivateData {
Widget* const widget(*rit); Widget* const widget(*rit);


if (widget->isVisible() && widget->onSpecial(ev)) if (widget->isVisible() && widget->onSpecial(ev))
break;
return 0;
} }

return 1;
} }


void onPuglMouse(const int button, const bool press, const int x, const int y) void onPuglMouse(const int button, const bool press, const int x, const int y)
@@ -889,14 +905,14 @@ struct Window::PrivateData {
handlePtr->onPuglDisplay(); handlePtr->onPuglDisplay();
} }


static void onKeyboardCallback(PuglView* view, bool press, uint32_t key)
static int onKeyboardCallback(PuglView* view, bool press, uint32_t key)
{ {
handlePtr->onPuglKeyboard(press, key);
return handlePtr->onPuglKeyboard(press, key);
} }


static void onSpecialCallback(PuglView* view, bool press, PuglKey key)
static int onSpecialCallback(PuglView* view, bool press, PuglKey key)
{ {
handlePtr->onPuglSpecial(press, static_cast<Key>(key));
return handlePtr->onPuglSpecial(press, static_cast<Key>(key));
} }


static void onMouseCallback(PuglView* view, int button, bool press, int x, int y) static void onMouseCallback(PuglView* view, int button, bool press, int x, int y)


+ 8
- 8
dpf/dgl/src/nanovg/stb_image.h View File

@@ -2280,13 +2280,13 @@ static void stbi__init_zdefaults(void)


static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) static int stbi__parse_zlib(stbi__zbuf *a, int parse_header)
{ {
int final, type;
int final_, type;
if (parse_header) if (parse_header)
if (!stbi__parse_zlib_header(a)) return 0; if (!stbi__parse_zlib_header(a)) return 0;
a->num_bits = 0; a->num_bits = 0;
a->code_buffer = 0; a->code_buffer = 0;
do { do {
final = stbi__zreceive(a,1);
final_ = stbi__zreceive(a,1);
type = stbi__zreceive(a,2); type = stbi__zreceive(a,2);
if (type == 0) { if (type == 0) {
if (!stbi__parse_uncomperssed_block(a)) return 0; if (!stbi__parse_uncomperssed_block(a)) return 0;
@@ -2303,7 +2303,7 @@ static int stbi__parse_zlib(stbi__zbuf *a, int parse_header)
} }
if (!stbi__parse_huffman_block(a)) return 0; if (!stbi__parse_huffman_block(a)) return 0;
} }
} while (!final);
} while (!final_);
return 1; return 1;
} }


@@ -2535,13 +2535,13 @@ static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 r


static int stbi__create_png_image(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, int interlaced) static int stbi__create_png_image(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, int interlaced)
{ {
stbi_uc *final;
stbi_uc *final_;
int p; int p;
if (!interlaced) if (!interlaced)
return stbi__create_png_image_raw(a, raw, raw_len, out_n, a->s->img_x, a->s->img_y); return stbi__create_png_image_raw(a, raw, raw_len, out_n, a->s->img_x, a->s->img_y);


// de-interlacing // de-interlacing
final = (stbi_uc *) malloc(a->s->img_x * a->s->img_y * out_n);
final_ = (stbi_uc *) malloc(a->s->img_x * a->s->img_y * out_n);
for (p=0; p < 7; ++p) { for (p=0; p < 7; ++p) {
int xorig[] = { 0,4,0,2,0,1,0 }; int xorig[] = { 0,4,0,2,0,1,0 };
int yorig[] = { 0,0,4,0,2,0,1 }; int yorig[] = { 0,0,4,0,2,0,1 };
@@ -2553,19 +2553,19 @@ static int stbi__create_png_image(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_l
y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p];
if (x && y) { if (x && y) {
if (!stbi__create_png_image_raw(a, raw, raw_len, out_n, x, y)) { if (!stbi__create_png_image_raw(a, raw, raw_len, out_n, x, y)) {
free(final);
free(final_);
return 0; return 0;
} }
for (j=0; j < y; ++j) for (j=0; j < y; ++j)
for (i=0; i < x; ++i) for (i=0; i < x; ++i)
memcpy(final + (j*yspc[p]+yorig[p])*a->s->img_x*out_n + (i*xspc[p]+xorig[p])*out_n,
memcpy(final_ + (j*yspc[p]+yorig[p])*a->s->img_x*out_n + (i*xspc[p]+xorig[p])*out_n,
a->out + (j*x+i)*out_n, out_n); a->out + (j*x+i)*out_n, out_n);
free(a->out); free(a->out);
raw += (x*out_n+1)*y; raw += (x*out_n+1)*y;
raw_len -= (x*out_n+1)*y; raw_len -= (x*out_n+1)*y;
} }
} }
a->out = final;
a->out = final_;


return 1; return 1;
} }


+ 4
- 2
dpf/dgl/src/pugl/pugl.h View File

@@ -74,8 +74,9 @@ typedef void (*PuglDisplayFunc)(PuglView* view);
@param view The view the event occured in. @param view The view the event occured in.
@param press True if the key was pressed, false if released. @param press True if the key was pressed, false if released.
@param key Unicode point of the key pressed. @param key Unicode point of the key pressed.
@return 0 if event was handled, otherwise send event to parent window.
*/ */
typedef void (*PuglKeyboardFunc)(PuglView* view, bool press, uint32_t key);
typedef int (*PuglKeyboardFunc)(PuglView* view, bool press, uint32_t key);


/** /**
A function called when the pointer moves. A function called when the pointer moves.
@@ -129,8 +130,9 @@ typedef void (*PuglScrollFunc)(PuglView* view, int x, int y, float dx, float dy)
@param view The view the event occured in. @param view The view the event occured in.
@param press True if the key was pressed, false if released. @param press True if the key was pressed, false if released.
@param key The key pressed. @param key The key pressed.
@return 0 if event was handled, otherwise send event to parent window.
*/ */
typedef void (*PuglSpecialFunc)(PuglView* view, bool press, PuglKey key);
typedef int (*PuglSpecialFunc)(PuglView* view, bool press, PuglKey key);


/** /**
A function called when a filename is selected via file-browser. A function called when a filename is selected via file-browser.


+ 16
- 3
dpf/dgl/src/pugl/pugl_x11.c View File

@@ -430,6 +430,7 @@ dispatchKey(PuglView* view, XEvent* event, bool press)
{ {
KeySym sym; KeySym sym;
char str[5]; char str[5];
PuglKey special;
const int n = XLookupString(&event->xkey, str, 4, &sym, NULL); const int n = XLookupString(&event->xkey, str, 4, &sym, NULL);


if (sym == XK_Escape && view->closeFunc && !press && !view->parent) { if (sym == XK_Escape && view->closeFunc && !press && !view->parent) {
@@ -438,18 +439,30 @@ dispatchKey(PuglView* view, XEvent* event, bool press)
return; return;
} }
if (n == 0) { if (n == 0) {
goto send_event;
return; return;
} }
if (n > 1) { if (n > 1) {
fprintf(stderr, "warning: Unsupported multi-byte key %X\n", (int)sym); fprintf(stderr, "warning: Unsupported multi-byte key %X\n", (int)sym);
goto send_event;
return; return;
} }


const PuglKey special = keySymToSpecial(sym);
special = keySymToSpecial(sym);
if (special && view->specialFunc) { if (special && view->specialFunc) {
view->specialFunc(view, press, special);
if (view->specialFunc(view, press, special) == 0) {
return;
}
} else if (!special && view->keyboardFunc) { } else if (!special && view->keyboardFunc) {
view->keyboardFunc(view, press, str[0]);
if (view->keyboardFunc(view, press, str[0]) == 0) {
return;
}
}

send_event:
if (view->parent) {
event->xany.window = view->parent;
XSendEvent(view->impl->display, view->parent, True, press ? KeyPressMask : KeyReleaseMask, event);
} }
} }




+ 10
- 3
dpf/distrho/src/DistrhoPluginJack.cpp View File

@@ -184,13 +184,20 @@ public:


~PluginJack() ~PluginJack()
{ {
if (fClient == nullptr)
return;
if (fClient != nullptr)
jack_deactivate(fClient);


jack_deactivate(fClient);
if (fLastOutputValues != nullptr)
{
delete[] fLastOutputValues;
fLastOutputValues = nullptr;
}


fPlugin.deactivate(); fPlugin.deactivate();


if (fClient == nullptr)
return;

#if DISTRHO_PLUGIN_IS_SYNTH #if DISTRHO_PLUGIN_IS_SYNTH
jack_port_unregister(fClient, fPortMidiIn); jack_port_unregister(fClient, fPortMidiIn);
fPortMidiIn = nullptr; fPortMidiIn = nullptr;


+ 1
- 1
get-plugins.sh View File

@@ -2,7 +2,7 @@


set -e set -e


PLUGINS=("Mini-Series" "MVerb" "Nekobi" "ProM" "ndc-Plugs")
PLUGINS=("Kars" "Mini-Series" "MVerb" "Nekobi" "ProM" "ndc-Plugs")


if [ ! -f Makefile ]; then if [ ! -f Makefile ]; then
echo "Makefile not found, please run this script from DPF-Plugins root source dir" echo "Makefile not found, please run this script from DPF-Plugins root source dir"


+ 1
- 1
plugins/Nekobi/DistrhoPluginNekobi.cpp View File

@@ -163,7 +163,7 @@ void DistrhoPluginNekobi::initParameter(uint32_t index, Parameter& parameter)
switch (index) switch (index)
{ {
case paramWaveform: case paramWaveform:
parameter.hints = kParameterIsAutomable|kParameterIsBoolean;
parameter.hints = kParameterIsAutomable|kParameterIsInteger;
parameter.name = "Waveform"; parameter.name = "Waveform";
parameter.symbol = "waveform"; parameter.symbol = "waveform";
parameter.ranges.def = 0.0f; parameter.ranges.def = 0.0f;


+ 1
- 4
plugins/Nekobi/DistrhoUINekobi.hpp View File

@@ -20,10 +20,7 @@


#include "DistrhoUI.hpp" #include "DistrhoUI.hpp"


#include "ImageAboutWindow.hpp"
#include "ImageButton.hpp"
#include "ImageKnob.hpp"
#include "ImageSlider.hpp"
#include "ImageWidgets.hpp"


#include "DistrhoArtworkNekobi.hpp" #include "DistrhoArtworkNekobi.hpp"
#include "NekoWidget.hpp" #include "NekoWidget.hpp"


Loading…
Cancel
Save