diff -Nru carla-2.5.5/debian/changelog carla-2.5.6/debian/changelog --- carla-2.5.5/debian/changelog 2023-06-05 04:13:47.000000000 +0000 +++ carla-2.5.6/debian/changelog 2023-08-06 03:58:31.000000000 +0000 @@ -1,8 +1,26 @@ -carla (2.5.5-0ubuntu1~bpo22.04.1) jammy-backports; urgency=medium +carla (2.5.6-0ubuntu1~bpo22.04.1) jammy-backports; urgency=medium - * No-change backport to jammy (LP: #2022875) + * No-change backport to jammy. (LP: #2030302) - -- Erich Eickmeyer Sun, 04 Jun 2023 21:13:47 -0700 + -- Erich Eickmeyer Sat, 05 Aug 2023 20:58:31 -0700 + +carla (2.5.6-0ubuntu1) mantic; urgency=medium + + [ Erich Eickmeyer ] + * New upstream release 2.5.6 + * d/control: Switch wine-development for standard wine + * d/rules: Reflect change to standard wine + + [ Filipe Coelho ] + * Fix compatibility of plugin discovery with newer 2.6.x tools + * Fix crash when using JACK under Linux ARM + * Fix carla-lv2 pre-run with 0 frames + * Fix carla-vst GUI for high-dpi screens + * Fix carla-native-plugin library exported symbols + * Show custom error message when trying to start JACK driver without JACK + * Skip special treatment for LADISH (do not set session management hints) + + -- Erich Eickmeyer Sat, 05 Aug 2023 18:12:26 -0700 carla (2.5.5-0ubuntu1) mantic; urgency=medium @@ -18,7 +36,7 @@ * Fix showing engine device settings on systems without JACK * Remove use of REAL_BUILD macro, no longer needed * Tweaks for integration in OBS - * Other minor fixes and cleanup + * Other minor fixes and cleanup -- Erich Eickmeyer Sun, 04 Jun 2023 16:39:48 -0700 diff -Nru carla-2.5.5/debian/control carla-2.5.6/debian/control --- carla-2.5.5/debian/control 2023-06-04 23:39:12.000000000 +0000 +++ carla-2.5.6/debian/control 2023-08-06 01:12:26.000000000 +0000 @@ -26,9 +26,9 @@ libsndfile1-dev, g++-mingw-w64, g++-mingw-w64-i686 [amd64], - libwine-development-dev, + libwine-dev, mingw-w64, - wine64-development-tools | wine32-development-tools + wine64-tools | wine32-tools Build-Conflicts: libffi-static, glib-static, diff -Nru carla-2.5.5/debian/rules carla-2.5.6/debian/rules --- carla-2.5.5/debian/rules 2023-06-04 23:39:12.000000000 +0000 +++ carla-2.5.6/debian/rules 2023-08-06 01:12:26.000000000 +0000 @@ -1,6 +1,6 @@ #!/usr/bin/make -f -export PATH:=$(PATH):/usr/lib/wine-development/ +export PATH:=$(PATH):/usr/lib/wine-development/:/usr/lib/wine/ ARCH=$(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) @@ -14,6 +14,8 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all CXXFLAGS += -fpermissive +export WINECC=/usr/lib/wine/winegcc + %: dh $@ @@ -29,12 +31,10 @@ $(MAKE) $(JOBS) ifeq ($(ARCH),amd64) - WINECC=/usr/lib/wine-development/winegcc make $(JOBS) posix64 wine64 env CFLAGS="" CPPFLAGS="" CXXFLAGS="" LDFLAGS="" \ make $(JOBS) win64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ else - WINECC=/usr/lib/wine-development/winegcc make $(JOBS) posix32 wine32 env CFLAGS="" CPPFLAGS="" CXXFLAGS="" LDFLAGS="" \ make $(JOBS) win32 CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ @@ -73,7 +73,7 @@ dh_missing --fail-missing override_dh_shlibdeps: - env LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/x86_64-linux-gnu/wine-development:/usr/lib/i386-linux-gnu/wine-development dh_shlibdeps + env LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/x86_64-linux-gnu/wine-development:/usr/lib/x86_64-linux-gnu/wine:/usr/lib/i386-linux-gnu/wine-development:/usr/lib/i386-linux-gnu/wine dh_shlibdeps override_dh_builddeb: dh_builddeb $(skip_packages) diff -Nru carla-2.5.5/.github/workflows/build.yml carla-2.5.6/.github/workflows/build.yml --- carla-2.5.5/.github/workflows/build.yml 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/.github/workflows/build.yml 2023-08-04 09:04:40.000000000 +0000 @@ -1,12 +1,7 @@ name: build -on: - push: - branches: - - '*' - pull_request: - branches: - - '*' +on: [push, pull_request] + env: DEBIAN_FRONTEND: noninteractive HOMEBREW_NO_AUTO_UPDATE: 1 diff -Nru carla-2.5.5/.github/workflows/dpf.yml carla-2.5.6/.github/workflows/dpf.yml --- carla-2.5.5/.github/workflows/dpf.yml 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/.github/workflows/dpf.yml 2023-08-04 09:04:40.000000000 +0000 @@ -1,12 +1,6 @@ name: dpf -on: - push: - branches: - - '*' - pull_request: - branches: - - '*' +on: [push, pull_request] jobs: linux: diff -Nru carla-2.5.5/.github/workflows/release.yml carla-2.5.6/.github/workflows/release.yml --- carla-2.5.5/.github/workflows/release.yml 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/.github/workflows/release.yml 2023-08-04 09:04:40.000000000 +0000 @@ -1,12 +1,6 @@ name: release -on: - push: - branches: - - '*' - pull_request: - branches: - - '*' +on: [push, pull_request] env: CACHE_VERSION: 1 diff -Nru carla-2.5.5/.github/workflows/wine.yml carla-2.5.6/.github/workflows/wine.yml --- carla-2.5.5/.github/workflows/wine.yml 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/.github/workflows/wine.yml 2023-08-04 09:04:40.000000000 +0000 @@ -1,12 +1,7 @@ name: wine -on: - push: - branches: - - '*' - pull_request: - branches: - - '*' +on: [push, pull_request] + env: DEBIAN_FRONTEND: noninteractive HOMEBREW_NO_AUTO_UPDATE: 1 diff -Nru carla-2.5.5/Makefile carla-2.5.6/Makefile --- carla-2.5.5/Makefile 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/Makefile 2023-08-04 09:04:40.000000000 +0000 @@ -23,7 +23,7 @@ endif # see also source/frontend/carla_shared.py and source/includes/CarlaDefines.h -VERSION := 2.5.5 +VERSION := 2.5.6 -include Makefile.user.mk diff -Nru carla-2.5.5/source/backend/engine/CarlaEngineJack.cpp carla-2.5.6/source/backend/engine/CarlaEngineJack.cpp --- carla-2.5.5/source/backend/engine/CarlaEngineJack.cpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/backend/engine/CarlaEngineJack.cpp 2023-08-04 09:04:40.000000000 +0000 @@ -1430,9 +1430,14 @@ bool init(const char* const clientName) override { CARLA_SAFE_ASSERT_RETURN(fClient != nullptr || (clientName != nullptr && clientName[0] != '\0'), false); - CARLA_SAFE_ASSERT_RETURN(jackbridge_is_ok(), false); carla_debug("CarlaEngineJack::init(\"%s\")", clientName); + if (!jackbridge_is_ok()) + { + setLastError("JACK is not available or installed"); + return false; + } + fFreewheel = false; fExternalPatchbayHost = true; fExternalPatchbayOsc = true; diff -Nru carla-2.5.5/source/backend/plugin/CarlaPluginLV2.cpp carla-2.5.6/source/backend/plugin/CarlaPluginLV2.cpp --- carla-2.5.5/source/backend/plugin/CarlaPluginLV2.cpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/backend/plugin/CarlaPluginLV2.cpp 2023-08-04 09:04:40.000000000 +0000 @@ -2486,7 +2486,7 @@ for (uint32_t i=0; i < count; ++i) { - const uint32_t& type(evIns.getAt(i, 0x0)); + const uint32_t type = evIns.getAt(i, 0x0); if (type == CARLA_EVENT_DATA_ATOM) { @@ -2518,7 +2518,7 @@ for (uint32_t i=0; i < count; ++i) { - const uint32_t& type(evOuts.getAt(i, 0x0)); + const uint32_t type = evOuts.getAt(i, 0x0); if (type == CARLA_EVENT_DATA_ATOM) { diff -Nru carla-2.5.5/source/frontend/carla_database.py carla-2.5.6/source/frontend/carla_database.py --- carla-2.5.5/source/frontend/carla_database.py 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/frontend/carla_database.py 2023-08-04 09:04:40.000000000 +0000 @@ -239,12 +239,12 @@ else: break - if line == "carla-discovery::init::-----------": + if line.startswith("carla-discovery::init::"): pinfo = deepcopy(PyPluginInfo) pinfo['type'] = itype pinfo['filename'] = filename if filename != ":all" else "" - elif line == "carla-discovery::end::------------": + elif line.startswith("carla-discovery::end::"): if pinfo is not None: plugins.append(pinfo) del pinfo diff -Nru carla-2.5.5/source/frontend/carla_host.py carla-2.5.6/source/frontend/carla_host.py --- carla-2.5.5/source/frontend/carla_host.py 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/frontend/carla_host.py 2023-08-04 09:04:40.000000000 +0000 @@ -201,7 +201,7 @@ self.fSessionManagerName = "Plugin" elif LADISH_APP_NAME: self.fClientName = LADISH_APP_NAME - self.fSessionManagerName = "LADISH" + self.fSessionManagerName = "" elif NSM_URL and host.nsmOK: self.fClientName = "Carla.tmp" self.fSessionManagerName = "Non Session Manager TMP" diff -Nru carla-2.5.5/source/frontend/carla_shared.py carla-2.5.6/source/frontend/carla_shared.py --- carla-2.5.5/source/frontend/carla_shared.py 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/frontend/carla_shared.py 2023-08-04 09:04:40.000000000 +0000 @@ -76,7 +76,7 @@ # ------------------------------------------------------------------------------------------------------------ # Set Version -VERSION = "2.5.5" +VERSION = "2.5.6" # ------------------------------------------------------------------------------------------------------------ # Set TMP diff -Nru carla-2.5.5/source/includes/CarlaDefines.h carla-2.5.6/source/includes/CarlaDefines.h --- carla-2.5.5/source/includes/CarlaDefines.h 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/includes/CarlaDefines.h 2023-08-04 09:04:40.000000000 +0000 @@ -27,8 +27,8 @@ #endif /* Set Version */ -#define CARLA_VERSION_HEX 0x020505 -#define CARLA_VERSION_STRING "2.5.5" +#define CARLA_VERSION_HEX 0x020506 +#define CARLA_VERSION_STRING "2.5.6" #define CARLA_VERSION_STRMIN "2.5" /* Check OS */ diff -Nru carla-2.5.5/source/jackbridge/JackBridge.hpp carla-2.5.6/source/jackbridge/JackBridge.hpp --- carla-2.5.5/source/jackbridge/JackBridge.hpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/jackbridge/JackBridge.hpp 2023-08-04 09:04:40.000000000 +0000 @@ -84,6 +84,11 @@ # endif #endif +#if (defined(__arm__) || defined(__aarch64__) || defined(__mips__) || defined(__ppc__) || defined(__powerpc__)) && !defined(__APPLE__) +# undef POST_PACKED_STRUCTURE +# define POST_PACKED_STRUCTURE +#endif + #define JACK_DEFAULT_AUDIO_TYPE "32 bit float mono audio" #define JACK_DEFAULT_MIDI_TYPE "8 bit raw midi" diff -Nru carla-2.5.5/source/plugin/carla-host-plugin.cpp carla-2.5.6/source/plugin/carla-host-plugin.cpp --- carla-2.5.5/source/plugin/carla-host-plugin.cpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/carla-host-plugin.cpp 2023-08-04 09:04:40.000000000 +0000 @@ -18,6 +18,7 @@ #include "CarlaNativePlugin.h" #define CARLA_PLUGIN_BUILD +#define CARLA_HOST_PLUGIN_BUILD #include "carla-native-plugin.cpp" diff -Nru carla-2.5.5/source/plugin/carla-native-plugin.cpp carla-2.5.6/source/plugin/carla-native-plugin.cpp --- carla-2.5.5/source/plugin/carla-native-plugin.cpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/carla-native-plugin.cpp 2023-08-04 09:04:40.000000000 +0000 @@ -26,7 +26,7 @@ // -------------------------------------------------------------------------------------------------------------------- // Expose info functions as needed -#ifndef CARLA_PLUGIN_BUILD +#ifndef CARLA_HOST_PLUGIN_BUILD # include "utils/Information.cpp" #endif diff -Nru carla-2.5.5/source/plugin/carla-vst.cpp carla-2.5.6/source/plugin/carla-vst.cpp --- carla-2.5.5/source/plugin/carla-vst.cpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/carla-vst.cpp 2023-08-04 09:04:40.000000000 +0000 @@ -1,6 +1,6 @@ /* * Carla Native Plugins - * Copyright (C) 2013-2022 Filipe Coelho + * Copyright (C) 2013-2023 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -398,7 +398,7 @@ break; case effEditGetRect: - *(ERect**)ptr = &fVstRect; + *(VstRect**)ptr = &fVstRect; ret = 1; break; @@ -409,6 +409,7 @@ { destoryUILauncher(fUiLauncher); fUiLauncher = createUILauncher((uintptr_t)ptr, fDescriptor, fHandle); + getUILauncherSize(fUiLauncher, &fVstRect); } else { @@ -833,7 +834,7 @@ NativeMidiEvent fMidiEvents[kMaxMidiEvents]; char fProgramName[32+1]; NativeTimeInfo fTimeInfo; - ERect fVstRect; + VstRect fVstRect; // UI button CarlaUILauncher* fUiLauncher; diff -Nru carla-2.5.5/source/plugin/carla-vst.hpp carla-2.5.6/source/plugin/carla-vst.hpp --- carla-2.5.5/source/plugin/carla-vst.hpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/carla-vst.hpp 2023-08-04 09:04:40.000000000 +0000 @@ -1,6 +1,6 @@ /* * Carla Native Plugins - * Copyright (C) 2013-2022 Filipe Coelho + * Copyright (C) 2013-2023 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -32,7 +32,12 @@ NativePlugin* plugin; }; +struct VstRect { + int16_t top, left, bottom, right; +}; + CarlaUILauncher* createUILauncher(uintptr_t winId, const NativePluginDescriptor* d, NativePluginHandle h); +void getUILauncherSize(CarlaUILauncher* ui, VstRect* rect); void idleUILauncher(CarlaUILauncher* ui); void destoryUILauncher(CarlaUILauncher* ui); diff -Nru carla-2.5.5/source/plugin/Makefile carla-2.5.6/source/plugin/Makefile --- carla-2.5.5/source/plugin/Makefile 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/Makefile 2023-08-04 09:04:40.000000000 +0000 @@ -134,9 +134,17 @@ SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_native_patchbay32_plugin SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_native_patchbay64_plugin SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_native_patchbay_cv_plugin +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_native_patchbay_cv8_plugin +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_native_patchbay_cv32_plugin +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_native_patchbay_obs_plugin SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_create_native_plugin_host_handle SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_host_handle_free SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_native_plugin_engine +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_complete_license_text +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_juce_version +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_supported_file_extensions +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_supported_features +SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_library_filename SYMBOLS_NATIVE += -Wl,-exported_symbol,_carla_get_library_folder SYMBOLS_LV2 = -Wl,-exported_symbol,_lv2_descriptor ifeq ($(HAVE_PYQT),true) @@ -152,9 +160,18 @@ SYMBOLS_NATIVE += 'carla_get_native_patchbay32_plugin', SYMBOLS_NATIVE += 'carla_get_native_patchbay64_plugin', SYMBOLS_NATIVE += 'carla_get_native_patchbay_cv_plugin', +SYMBOLS_NATIVE += 'carla_get_native_patchbay_cv8_plugin', +SYMBOLS_NATIVE += 'carla_get_native_patchbay_cv32_plugin', +SYMBOLS_NATIVE += 'carla_get_native_patchbay_obs_plugin', SYMBOLS_NATIVE += 'carla_create_native_plugin_host_handle', SYMBOLS_NATIVE += 'carla_host_handle_free', -SYMBOLS_NATIVE += 'carla_get_native_plugin_engine' +SYMBOLS_NATIVE += 'carla_get_native_plugin_engine', +SYMBOLS_NATIVE += 'carla_get_complete_license_text', +SYMBOLS_NATIVE += 'carla_get_juce_version', +SYMBOLS_NATIVE += 'carla_get_supported_file_extensions', +SYMBOLS_NATIVE += 'carla_get_supported_features', +SYMBOLS_NATIVE += 'carla_get_library_filename', +SYMBOLS_NATIVE += 'carla_get_library_folder' SYMBOLS_NATIVE += ]" ifeq ($(HAVE_PYQT),true) SYMBOLS_LV2 = -sSIDE_MODULE=2 -sEXPORTED_FUNCTIONS="['lv2_descriptor','lv2ui_descriptor']" diff -Nru carla-2.5.5/source/plugin/symbols/carla-native-plugin.def carla-2.5.6/source/plugin/symbols/carla-native-plugin.def --- carla-2.5.5/source/plugin/symbols/carla-native-plugin.def 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/symbols/carla-native-plugin.def 2023-08-04 09:04:40.000000000 +0000 @@ -16,3 +16,6 @@ carla_get_supported_features @13 carla_get_library_filename @14 carla_get_library_folder @15 + carla_get_native_patchbay_cv8_plugin @16 + carla_get_native_patchbay_cv32_plugin @17 + carla_get_native_patchbay_obs_plugin @18 diff -Nru carla-2.5.5/source/plugin/symbols/carla-native-plugin.txt carla-2.5.6/source/plugin/symbols/carla-native-plugin.txt --- carla-2.5.5/source/plugin/symbols/carla-native-plugin.txt 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/symbols/carla-native-plugin.txt 2023-08-04 09:04:40.000000000 +0000 @@ -4,6 +4,9 @@ carla_get_native_patchbay32_plugin carla_get_native_patchbay64_plugin carla_get_native_patchbay_cv_plugin +carla_get_native_patchbay_cv8_plugin +carla_get_native_patchbay_cv32_plugin +carla_get_native_patchbay_obs_plugin carla_create_native_plugin_host_handle carla_host_handle_free carla_get_native_plugin_engine diff -Nru carla-2.5.5/source/plugin/symbols/carla-native-plugin.version carla-2.5.6/source/plugin/symbols/carla-native-plugin.version --- carla-2.5.5/source/plugin/symbols/carla-native-plugin.version 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/symbols/carla-native-plugin.version 2023-08-04 09:04:40.000000000 +0000 @@ -5,6 +5,9 @@ carla_get_native_patchbay32_plugin; carla_get_native_patchbay64_plugin; carla_get_native_patchbay_cv_plugin; + carla_get_native_patchbay_cv8_plugin; + carla_get_native_patchbay_cv32_plugin; + carla_get_native_patchbay_obs_plugin; carla_create_native_plugin_host_handle; carla_host_handle_free; carla_get_native_plugin_engine; diff -Nru carla-2.5.5/source/plugin/ui_launcher.cpp carla-2.5.6/source/plugin/ui_launcher.cpp --- carla-2.5.5/source/plugin/ui_launcher.cpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/plugin/ui_launcher.cpp 2023-08-04 09:04:40.000000000 +0000 @@ -1,6 +1,6 @@ /* * Carla Native Plugin UI launcher - * Copyright (C) 2018-2022 Filipe Coelho + * Copyright (C) 2018-2023 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -90,6 +90,12 @@ handle(h), pluginWindow(parent) { + const uint width = ui_launcher_res::carla_uiWidth; + const uint height = ui_launcher_res::carla_uiHeight; + + Widget::setSize(width, height); + setGeometryConstraints(width, height, true, true, true); + startButton.setCallback(this); pluginWindow.leaveContextAfterCreation(); @@ -148,6 +154,17 @@ return new CarlaUILauncher(winId, d, h); } +void getUILauncherSize(CarlaUILauncher* const ui, VstRect* const rect) +{ + rect->right = ui->window.getWidth(); + rect->bottom = ui->window.getHeight(); + #ifdef DISTRHO_OS_MAC + const double scaleFactor = ui->window.getScaleFactor(); + rect->right /= scaleFactor; + rect->bottom /= scaleFactor; + #endif +} + void idleUILauncher(CarlaUILauncher* const ui) { ui->app.idle(); diff -Nru carla-2.5.5/source/utils/CarlaLv2Utils.hpp carla-2.5.6/source/utils/CarlaLv2Utils.hpp --- carla-2.5.5/source/utils/CarlaLv2Utils.hpp 2023-06-04 12:40:25.000000000 +0000 +++ carla-2.5.6/source/utils/CarlaLv2Utils.hpp 2023-08-04 09:04:40.000000000 +0000 @@ -972,9 +972,6 @@ handleParameterValueChanged(i, curValue); } - if (frames == 0) - return false; - // init event out data if (fPorts.numMidiOuts > 0 || fPorts.hasUI) { @@ -995,6 +992,9 @@ } } + if (frames == 0) + return false; + return true; }