Browse Source

carla-control: don't use global vars

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.1-alpha2
falkTX 6 years ago
parent
commit
bf4774abbd
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
1 changed files with 28 additions and 42 deletions
  1. +28
    -42
      source/frontend/carla_control.py

+ 28
- 42
source/frontend/carla_control.py View File

@@ -31,13 +31,6 @@ from liblo import UDP as LO_UDP


from random import random from random import random


# ------------------------------------------------------------------------------------------------------------
# Global liblo objects

global lo_target, lo_target_name
lo_target = None
lo_target_name = ""

# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Host OSC object # Host OSC object


@@ -45,6 +38,9 @@ class CarlaHostOSC(CarlaHostQtPlugin):
def __init__(self): def __init__(self):
CarlaHostQtPlugin.__init__(self) CarlaHostQtPlugin.__init__(self)


self.lo_target = None
self.lo_target_name = ""

# ------------------------------------------------------------------- # -------------------------------------------------------------------


def printAndReturnError(self, error): def printAndReturnError(self, error):
@@ -53,17 +49,19 @@ class CarlaHostOSC(CarlaHostQtPlugin):
return False return False


def sendMsg(self, lines): def sendMsg(self, lines):
global lo_target, lo_target_name

if lo_target is None:
return self.printAndReturnError("lo_target is None")
if lo_target_name is None:
return self.printAndReturnError("lo_target_name is None")
if len(lines) < 2: if len(lines) < 2:
return self.printAndReturnError("not enough arguments") return self.printAndReturnError("not enough arguments")


method = lines.pop(0) method = lines.pop(0)


if method == "set_engine_option":
return True

if self.lo_target is None:
return self.printAndReturnError("lo_target is None")
if self.lo_target_name is None:
return self.printAndReturnError("lo_target_name is None")

if method not in ( if method not in (
#"set_option", #"set_option",
"set_active", "set_active",
@@ -112,14 +110,13 @@ class CarlaHostOSC(CarlaHostQtPlugin):


print(path, args) print(path, args)


lo_send(lo_target, path, *args)
lo_send(self.lo_target, path, *args)
return True return True


# ------------------------------------------------------------------- # -------------------------------------------------------------------


def engine_init(self, driverName, clientName): def engine_init(self, driverName, clientName):
global lo_target
return lo_target is not None
return self.lo_target is not None


def engine_close(self): def engine_close(self):
return True return True
@@ -128,8 +125,7 @@ class CarlaHostOSC(CarlaHostQtPlugin):
return return


def is_engine_running(self): def is_engine_running(self):
global lo_target
return lo_target is not None
return self.lo_target is not None


def set_engine_about_to_close(self): def set_engine_about_to_close(self):
return return
@@ -437,14 +433,12 @@ class HostWindowOSC(HostWindow):
QTimer.singleShot(0, self.connectOsc) QTimer.singleShot(0, self.connectOsc)


def connectOsc(self, addr = None): def connectOsc(self, addr = None):
global lo_target, lo_target_name

if addr is not None: if addr is not None:
self.fOscAddress = addr self.fOscAddress = addr


lo_target = Address(self.fOscAddress)
lo_target_name = self.fOscAddress.rsplit("/", 1)[-1]
print("Connecting to \"%s\" as '%s'..." % (self.fOscAddress, lo_target_name))
self.host.lo_target = Address(self.fOscAddress)
self.host.lo_target_name = self.fOscAddress.rsplit("/", 1)[-1]
print("Connecting to \"%s\" as '%s'..." % (self.fOscAddress, self.host.lo_target_name))


try: try:
self.fOscServer = CarlaControlServer(self.host, LO_UDP if self.fOscAddress.startswith("osc.udp") else LO_TCP) self.fOscServer = CarlaControlServer(self.host, LO_UDP if self.fOscAddress.startswith("osc.udp") else LO_TCP)
@@ -453,20 +447,18 @@ class HostWindowOSC(HostWindow):
return return


self.fIdleTimer = self.startTimer(20) self.fIdleTimer = self.startTimer(20)
lo_send(lo_target, "/register", self.fOscServer.getFullURL())
lo_send(self.host.lo_target, "/register", self.fOscServer.getFullURL())


self.startTimers() self.startTimers()
self.ui.act_file_refresh.setEnabled(True) self.ui.act_file_refresh.setEnabled(True)


def disconnectOsc(self): def disconnectOsc(self):
global lo_target, lo_target_name

self.killTimers() self.killTimers()
self.ui.act_file_refresh.setEnabled(False) self.ui.act_file_refresh.setEnabled(False)


if lo_target is not None:
if self.host.lo_target is not None:
try: try:
lo_send(lo_target, "/unregister")
lo_send(self.host.lo_target, "/unregister")
except: except:
pass pass


@@ -479,8 +471,8 @@ class HostWindowOSC(HostWindow):


self.removeAllPlugins() self.removeAllPlugins()


lo_target = None
lo_target_name = ""
self.host.lo_target = None
self.host.lo_target_name = ""
self.fOscAddress = "" self.fOscAddress = ""


def removeAllPlugins(self): def removeAllPlugins(self):
@@ -489,9 +481,7 @@ class HostWindowOSC(HostWindow):


@pyqtSlot() @pyqtSlot()
def slot_fileConnect(self): def slot_fileConnect(self):
global lo_target, lo_target_name

if lo_target and self.fOscServer:
if self.host.lo_target and self.fOscServer:
urlText = self.fOscAddress urlText = self.fOscAddress
else: else:
urlText = "osc.tcp://127.0.0.1:19000/Carla" urlText = "osc.tcp://127.0.0.1:19000/Carla"
@@ -506,15 +496,13 @@ class HostWindowOSC(HostWindow):


@pyqtSlot() @pyqtSlot()
def slot_fileRefresh(self): def slot_fileRefresh(self):
global lo_target

if lo_target is None or self.fOscServer is None:
if self.host.lo_target is None or self.fOscServer is None:
return return


self.killTimers() self.killTimers()
lo_send(lo_target, "/unregister")
lo_send(self.host.lo_target, "/unregister")
self.removeAllPlugins() self.removeAllPlugins()
lo_send(lo_target, "/register", self.fOscServer.getFullURL())
lo_send(self.host.lo_target, "/register", self.fOscServer.getFullURL())
self.startTimers() self.startTimers()


@pyqtSlot() @pyqtSlot()
@@ -527,12 +515,10 @@ class HostWindowOSC(HostWindow):
HostWindow.timerEvent(self, event) HostWindow.timerEvent(self, event)


def closeEvent(self, event): def closeEvent(self, event):
global lo_target

self.killTimers() self.killTimers()


if lo_target is not None and self.fOscServer is not None:
lo_send(lo_target, "/unregister")
if self.host.lo_target is not None and self.fOscServer is not None:
lo_send(self.host.lo_target, "/unregister")


HostWindow.closeEvent(self, event) HostWindow.closeEvent(self, event)




Loading…
Cancel
Save