More msvc details, cleanup

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2023-05-26 00:30:18 +02:00
parent 84c219c629
commit f7696dca5e
No known key found for this signature in database
GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 39 additions and 48 deletions

View File

@ -29,8 +29,16 @@ endif()
#######################################################################################################################
# build options
set(CARLA_USE_JACK TRUE CACHE BOOL "Enable JACK")
set(CARLA_USE_OSC TRUE CACHE BOOL "Enable OSC")
if(MSVC)
set(CARLA_USE_JACK_DEFAULT FALSE)
set(CARLA_USE_OSC_DEFAULT FALSE)
else()
set(CARLA_USE_JACK_DEFAULT TRUE)
set(CARLA_USE_OSC_DEFAULT TRUE)
endif()
set(CARLA_USE_JACK TRUE CACHE ${CARLA_USE_JACK_DEFAULT} "Enable JACK")
set(CARLA_USE_OSC TRUE CACHE ${CARLA_USE_OSC_DEFAULT} "Enable OSC")
#######################################################################################################################
# required dependencies

View File

@ -1,6 +1,6 @@
/*
* Carla Plugin Host
* Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2023 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
@ -18,9 +18,7 @@
#include "CarlaEngineGraph.hpp"
#include "CarlaEngineInit.hpp"
#include "CarlaEngineInternal.hpp"
#include <ctime>
#include <sys/time.h>
#include "CarlaTimeUtils.hpp"
CARLA_BACKEND_START_NAMESPACE
@ -192,25 +190,6 @@ public:
// -------------------------------------------------------------------
protected:
static int64_t getTimeInMicroseconds() noexcept
{
#if defined(CARLA_OS_MAC) || defined(CARLA_OS_WIN)
struct timeval tv;
gettimeofday(&tv, nullptr);
return (tv.tv_sec * 1000000) + tv.tv_usec;
#else
struct timespec ts;
# ifdef CLOCK_MONOTONIC_RAW
clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
# else
clock_gettime(CLOCK_MONOTONIC, &ts);
# endif
return (ts.tv_sec * 1000000) + (ts.tv_nsec / 1000);
#endif
}
void run() override
{
const uint32_t bufferSize = pData->bufferSize;
@ -250,7 +229,7 @@ protected:
if (delay > 0)
carla_sleep(static_cast<uint>(delay));
oldTime = getTimeInMicroseconds();
oldTime = carla_gettime_us();
const PendingRtEventsRunner prt(this, bufferSize, true);
@ -260,7 +239,7 @@ protected:
pData->graph.process(pData, audioIns, audioOuts, bufferSize);
newTime = getTimeInMicroseconds();
newTime = carla_gettime_us();
CARLA_SAFE_ASSERT_CONTINUE(newTime >= oldTime);
const int64_t remainingTime = cycleTime - (newTime - oldTime);

View File

@ -1,6 +1,6 @@
/*
* Carla Log Thread
* Copyright (C) 2013-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2023 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
@ -24,12 +24,6 @@
#include <fcntl.h>
#ifdef CARLA_OS_WIN
# include <io.h>
# define _close(fd) close(fd)
# define _dup2(f1,f2) dup2(f1,f2)
#endif
using CARLA_BACKEND_NAMESPACE::EngineCallbackFunc;
// -----------------------------------------------------------------------
@ -55,7 +49,7 @@ public:
std::fflush(stdout);
std::fflush(stderr);
#ifdef CARLA_OS_WIN
#ifdef CARLA_OS_WIN
// TODO: use process id instead
const int randint = std::rand();
@ -70,7 +64,9 @@ public:
CARLA_SAFE_ASSERT_RETURN(fPipe[1] != INVALID_HANDLE_VALUE,);
const int pipe1 = _open_osfhandle((INT_PTR)fPipe[1], _O_WRONLY | _O_BINARY);
#else
const int stdout_fileno = _fileno(stdout);
const int stderr_fileno = _fileno(stderr);
#else
CARLA_SAFE_ASSERT_RETURN(pipe(fPipe) == 0,);
if (fcntl(fPipe[0], F_SETFL, O_NONBLOCK) != 0)
@ -81,13 +77,15 @@ public:
}
const int pipe1 = fPipe[1];
#endif
const int stdout_fileno = STDOUT_FILENO;
const int stderr_fileno = STDERR_FILENO;
#endif
fStdOut = dup(STDOUT_FILENO);
fStdOut = dup(stdout_fileno);
fStdErr = dup(STDERR_FILENO);
dup2(pipe1, STDOUT_FILENO);
dup2(pipe1, STDERR_FILENO);
dup2(pipe1, stdout_fileno);
dup2(pipe1, stderr_fileno);
startThread();
}
@ -102,13 +100,19 @@ public:
std::fflush(stdout);
std::fflush(stderr);
#ifdef CARLA_OS_WIN
#ifdef CARLA_OS_WIN
CloseHandle(fPipe[0]);
CloseHandle(fPipe[1]);
#else
const int stdout_fileno = _fileno(stdout);
const int stderr_fileno = _fileno(stderr);
#else
close(fPipe[0]);
close(fPipe[1]);
#endif
const int stdout_fileno = STDOUT_FILENO;
const int stderr_fileno = STDERR_FILENO;
#endif
dup2(fStdOut, STDOUT_FILENO);
dup2(fStdErr, STDERR_FILENO);
@ -193,11 +197,11 @@ protected:
}
private:
#ifdef CARLA_OS_WIN
#ifdef CARLA_OS_WIN
HANDLE fPipe[2];
#else
#else
int fPipe[2];
#endif
#endif
int fStdOut;
int fStdErr;
@ -205,14 +209,14 @@ private:
EngineCallbackFunc fCallback;
void* fCallbackPtr;
#ifdef CARLA_OS_WIN
#ifdef CARLA_OS_WIN
ssize_t read(const HANDLE pipeh, void* const buf, DWORD numBytes)
{
if (ReadFile(pipeh, buf, numBytes, &numBytes, nullptr) != FALSE)
return numBytes;
return -1;
}
#endif
#endif
//CARLA_PREVENT_HEAP_ALLOCATION
CARLA_DECLARE_NON_COPYABLE(CarlaLogThread)