Browse Source

libjack: Replace hardcoded numbers with enums

Signed-off-by: falkTX <falktx@gmail.com>
tags/v2.1-alpha2
falkTX 5 years ago
parent
commit
ada9445338
Signed by: falkTX <falktx@gmail.com> GPG Key ID: 2D3445A829213837
6 changed files with 81 additions and 40 deletions
  1. +5
    -18
      source/backend/plugin/CarlaPluginJack.cpp
  2. +56
    -0
      source/includes/CarlaLibJackHints.h
  3. +8
    -12
      source/interposer/interposer-jack-x11.cpp
  4. +1
    -4
      source/libjack/api.hpp
  5. +6
    -6
      source/libjack/libjack.cpp
  6. +5
    -0
      source/libjack/libjack.hpp

+ 5
- 18
source/backend/plugin/CarlaPluginJack.cpp View File

@@ -20,6 +20,7 @@


#ifdef CARLA_OS_LINUX #ifdef CARLA_OS_LINUX


#include "CarlaLibJackHints.h"
#include "CarlaBackendUtils.hpp" #include "CarlaBackendUtils.hpp"
#include "CarlaBridgeUtils.hpp" #include "CarlaBridgeUtils.hpp"
#include "CarlaEngineUtils.hpp" #include "CarlaEngineUtils.hpp"
@@ -52,20 +53,6 @@ using water::Time;


CARLA_BACKEND_START_NAMESPACE CARLA_BACKEND_START_NAMESPACE


enum {
FLAG_CONTROL_WINDOW = 0x01,
FLAG_CAPTURE_FIRST_WINDOW = 0x02,
FLAG_BUFFERS_ADDITION_MODE = 0x10,
};

enum {
SESSION_MGR_NONE = 0,
SESSION_MGR_AUTO = 1,
SESSION_MGR_JACK = 2,
SESSION_MGR_LADISH = 3,
SESSION_MGR_NSM = 4,
};

static size_t safe_rand(const size_t limit) static size_t safe_rand(const size_t limit)
{ {
const int r = std::rand(); const int r = std::rand();
@@ -247,7 +234,7 @@ protected:


const int sessionManager = fSetupLabel[4] - '0'; const int sessionManager = fSetupLabel[4] - '0';


if (sessionManager == SESSION_MGR_NSM)
if (sessionManager == LIBJACK_SESSION_MANAGER_NSM)
{ {
// NSM support // NSM support
fOscServer = lo_server_new_with_proto(nullptr, LO_UDP, _osc_error_handler); fOscServer = lo_server_new_with_proto(nullptr, LO_UDP, _osc_error_handler);
@@ -324,7 +311,7 @@ protected:
for (; fProcess->isRunning() && ! shouldThreadExit();) for (; fProcess->isRunning() && ! shouldThreadExit();)
{ {
#ifdef HAVE_LIBLO #ifdef HAVE_LIBLO
if (sessionManager == SESSION_MGR_NSM)
if (sessionManager == LIBJACK_SESSION_MANAGER_NSM)
{ {
lo_server_recv_noblock(fOscServer, 50); lo_server_recv_noblock(fOscServer, 50);
} }
@@ -336,7 +323,7 @@ protected:
} }


#ifdef HAVE_LIBLO #ifdef HAVE_LIBLO
if (sessionManager == SESSION_MGR_NSM)
if (sessionManager == LIBJACK_SESSION_MANAGER_NSM)
{ {
lo_server_free(fOscServer); lo_server_free(fOscServer);
fOscServer = nullptr; fOscServer = nullptr;
@@ -1563,7 +1550,7 @@ public:
#endif #endif
//fInfo.optionsAvailable = optionAv; //fInfo.optionsAvailable = optionAv;


if (setupHints & FLAG_CONTROL_WINDOW)
if (setupHints & LIBJACK_FLAG_CONTROL_WINDOW)
pData->hints |= PLUGIN_HAS_CUSTOM_UI; pData->hints |= PLUGIN_HAS_CUSTOM_UI;


// --------------------------------------------------------------- // ---------------------------------------------------------------


+ 56
- 0
source/includes/CarlaLibJackHints.h View File

@@ -0,0 +1,56 @@
/*
* Carla JACK API for external applications
* Copyright (C) 2016-2019 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 2 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 doc/GPL.txt file.
*/

#ifndef CARLA_LIBJACK_HINTS_H_INCLUDED
#define CARLA_LIBJACK_HINTS_H_INCLUDED

#include "CarlaDefines.h"

#ifdef __cplusplus
extern "C" {
#endif

enum SetupHints {
// Application Window management
LIBJACK_FLAG_CONTROL_WINDOW = 0x01,
LIBJACK_FLAG_CAPTURE_FIRST_WINDOW = 0x02,
// Audio/MIDI Buffers management
LIBJACK_FLAG_AUDIO_BUFFERS_ADDITION = 0x10,
LIBJACK_FLAG_MIDI_OUTPUT_BUFFERS_CHANNEL_MIXDOWN = 0x20,
};

enum SessionManager {
LIBJACK_SESSION_MANAGER_NONE = 0,
LIBJACK_SESSION_MANAGER_AUTO = 1,
LIBJACK_SESSION_MANAGER_JACK = 2,
LIBJACK_SESSION_MANAGER_LADISH = 3,
LIBJACK_SESSION_MANAGER_NSM = 4,
};

enum InterposerAction {
LIBJACK_INTERPOSER_ACTION_NONE = 0,
LIBJACK_INTERPOSER_ACTION_SET_HINTS_AND_CALLBACK,
LIBJACK_INTERPOSER_ACTION_SET_SESSION_MANAGER,
LIBJACK_INTERPOSER_ACTION_SHOW_HIDE_GUI,
LIBJACK_INTERPOSER_ACTION_CLOSE_EVERYTHING,
};

#ifdef __cplusplus
}
#endif

#endif // CARLA_LIBJACK_HINTS_H_INCLUDED

+ 8
- 12
source/interposer/interposer-jack-x11.cpp View File

@@ -15,14 +15,12 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/ */


#include "CarlaLibJackHints.h"
#include "CarlaUtils.hpp" #include "CarlaUtils.hpp"


#include <dlfcn.h> #include <dlfcn.h>
#include <X11/Xlib.h> #include <X11/Xlib.h>


CARLA_EXPORT
int jack_carla_interposed_action(int action, int value, void* ptr);

// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------


struct ScopedLibOpen { struct ScopedLibOpen {
@@ -81,8 +79,8 @@ typedef enum {
static Display* gCurrentlyMappedDisplay = nullptr; static Display* gCurrentlyMappedDisplay = nullptr;
static Window gCurrentlyMappedWindow = 0; static Window gCurrentlyMappedWindow = 0;
static CarlaInterposedCallback gInterposedCallback = nullptr; static CarlaInterposedCallback gInterposedCallback = nullptr;
static int gInterposedSessionManager = 0;
static int gInterposedHints = 0;
static uint gInterposedSessionManager = LIBJACK_SESSION_MANAGER_NONE;
static uint gInterposedHints = 0x0;
static WindowMappingType gCurrentWindowType = WindowMapNone; static WindowMappingType gCurrentWindowType = WindowMapNone;
static bool gCurrentWindowMapped = false; static bool gCurrentWindowMapped = false;
static bool gCurrentWindowVisible = false; static bool gCurrentWindowVisible = false;
@@ -357,24 +355,22 @@ int XNextEvent(Display* display, XEvent* event)
// Full control helper // Full control helper


CARLA_EXPORT CARLA_EXPORT
int jack_carla_interposed_action(int action, int value, void* ptr)
int jack_carla_interposed_action(uint action, uint value, void* ptr)
{ {
carla_debug("jack_carla_interposed_action(%i, %i, %p)", action, value, ptr); carla_debug("jack_carla_interposed_action(%i, %i, %p)", action, value, ptr);


switch (action) switch (action)
{ {
case 1:
// set hints and callback
case LIBJACK_INTERPOSER_ACTION_SET_HINTS_AND_CALLBACK:
gInterposedHints = value; gInterposedHints = value;
gInterposedCallback = (CarlaInterposedCallback)ptr; gInterposedCallback = (CarlaInterposedCallback)ptr;
return 1; return 1;


case 2:
// session manager
case LIBJACK_INTERPOSER_ACTION_SET_SESSION_MANAGER:
gInterposedSessionManager = value; gInterposedSessionManager = value;
return 1; return 1;


case 3:
case LIBJACK_INTERPOSER_ACTION_SHOW_HIDE_GUI:
// show gui // show gui
if (value != 0) if (value != 0)
{ {
@@ -414,7 +410,7 @@ int jack_carla_interposed_action(int action, int value, void* ptr)
} }
break; break;


case 4: // close everything
case LIBJACK_INTERPOSER_ACTION_CLOSE_EVERYTHING:
gCurrentWindowType = WindowMapNone; gCurrentWindowType = WindowMapNone;
gCurrentWindowMapped = false; gCurrentWindowMapped = false;
gCurrentWindowVisible = false; gCurrentWindowVisible = false;


+ 1
- 4
source/libjack/api.hpp View File

@@ -18,8 +18,7 @@
#ifndef CARLA_LIBJACK_API_H_INCLUDED #ifndef CARLA_LIBJACK_API_H_INCLUDED
#define CARLA_LIBJACK_API_H_INCLUDED #define CARLA_LIBJACK_API_H_INCLUDED


#include "CarlaDefines.h"

#include "CarlaLibJackHints.h"
#include "jackbridge/JackBridge.hpp" #include "jackbridge/JackBridge.hpp"


#include <pthread.h> #include <pthread.h>
@@ -29,8 +28,6 @@ extern "C" {
typedef uint32_t jack_port_type_id_t; typedef uint32_t jack_port_type_id_t;
typedef void*(*JackThreadCallback)(void* arg); typedef void*(*JackThreadCallback)(void* arg);


int jack_carla_interposed_action(int, int, void*);

// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------
// jack.h // jack.h




+ 6
- 6
source/libjack/libjack.cpp View File

@@ -1,6 +1,6 @@
/* /*
* Carla JACK API for external applications * Carla JACK API for external applications
* Copyright (C) 2016-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2016-2019 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
@@ -28,7 +28,7 @@
typedef int (*CarlaInterposedCallback)(int, void*); typedef int (*CarlaInterposedCallback)(int, void*);


CARLA_EXPORT CARLA_EXPORT
int jack_carla_interposed_action(int, int, void*)
int jack_carla_interposed_action(uint, uint, void*)
{ {
carla_stderr2("Non-export jack_carla_interposed_action called, this should not happen!!"); carla_stderr2("Non-export jack_carla_interposed_action called, this should not happen!!");
return 1337; return 1337;
@@ -173,8 +173,8 @@ public:
fSessionManager = libjackSetup[4] - '0'; fSessionManager = libjackSetup[4] - '0';
fSetupHints = libjackSetup[5] - '0'; fSetupHints = libjackSetup[5] - '0';


jack_carla_interposed_action(1, fSetupHints, (void*)carla_interposed_callback);
jack_carla_interposed_action(2, fSessionManager, nullptr);
jack_carla_interposed_action(LIBJACK_INTERPOSER_ACTION_SET_HINTS_AND_CALLBACK, fSetupHints, (void*)carla_interposed_callback);
jack_carla_interposed_action(LIBJACK_INTERPOSER_ACTION_SET_SESSION_MANAGER, fSessionManager, nullptr);


fNonRealtimeThread.startThread(false); fNonRealtimeThread.startThread(false);
} }
@@ -975,7 +975,7 @@ bool CarlaJackAppClient::handleNonRtData()
break; break;


case kPluginBridgeNonRtClientShowUI: case kPluginBridgeNonRtClientShowUI:
if (jack_carla_interposed_action(3, 1, nullptr) == 1337)
if (jack_carla_interposed_action(LIBJACK_INTERPOSER_ACTION_SHOW_HIDE_GUI, 1, nullptr) == 1337)
{ {
// failed, LD_PRELOAD did not work? // failed, LD_PRELOAD did not work?
const char* const message("Cannot show UI, LD_PRELOAD not working?"); const char* const message("Cannot show UI, LD_PRELOAD not working?");
@@ -994,7 +994,7 @@ bool CarlaJackAppClient::handleNonRtData()
break; break;


case kPluginBridgeNonRtClientHideUI: case kPluginBridgeNonRtClientHideUI:
jack_carla_interposed_action(3, 0, nullptr);
jack_carla_interposed_action(LIBJACK_INTERPOSER_ACTION_SHOW_HIDE_GUI, 0, nullptr);
break; break;


case kPluginBridgeNonRtClientUiParameterChange: case kPluginBridgeNonRtClientUiParameterChange:


+ 5
- 0
source/libjack/libjack.hpp View File

@@ -15,6 +15,9 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/ */


#ifndef CARLA_LIBJACK_HPP_INCLUDED
#define CARLA_LIBJACK_HPP_INCLUDED

// need to include this first // need to include this first
#include "CarlaDefines.h" #include "CarlaDefines.h"


@@ -289,3 +292,5 @@ struct JackServerState {
CARLA_BACKEND_END_NAMESPACE CARLA_BACKEND_END_NAMESPACE


// -------------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------------

#endif // CARLA_LIBJACK_HPP_INCLUDED

Loading…
Cancel
Save