Remove clang:find_bad_constructs suppression from modules/video_capture.
This CL removes //build/config/clang:find_bad_constructs from the
suppressed_configs list, which means that clang:find_bad_constructs
is now enabled on these translation units.
Bug: webrtc:9251, webrtc:163
Change-Id: I71350feb45c23d5a0e17e4828c514ce1c353f6a7
Reviewed-on: https://webrtc-review.googlesource.com/96700
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24524}
diff --git a/modules/video_capture/BUILD.gn b/modules/video_capture/BUILD.gn
index df5139e..43987ea 100644
--- a/modules/video_capture/BUILD.gn
+++ b/modules/video_capture/BUILD.gn
@@ -40,11 +40,6 @@
"../../system_wrappers",
"//third_party/libyuv",
]
-
- if (!build_with_chromium && is_clang) {
- # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
- suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
- }
}
rtc_static_library("video_capture") {
@@ -59,11 +54,6 @@
"../../rtc_base:rtc_base_approved",
"../../system_wrappers",
]
-
- if (!build_with_chromium && is_clang) {
- # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
- suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
- }
}
if (!build_with_chromium) {
@@ -99,11 +89,6 @@
]
all_dependent_configs = [ ":video_capture_internal_impl_config" ]
-
- if (!build_with_chromium && is_clang) {
- # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
- suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
- }
}
}
@@ -163,11 +148,6 @@
all_dependent_configs = [ ":video_capture_internal_impl_config" ]
- if (!build_with_chromium && is_clang) {
- # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
- suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
- }
-
if (build_with_mozilla && is_android) {
include_dirs = [
"/config/external/nspr",
@@ -216,11 +196,6 @@
"//testing/gtest",
]
deps += [ "../../test:test_main" ]
-
- if (!build_with_chromium && is_clang) {
- # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
- suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
- }
}
}
}
diff --git a/modules/video_capture/device_info_impl.h b/modules/video_capture/device_info_impl.h
index f6e1970..82b446b 100644
--- a/modules/video_capture/device_info_impl.h
+++ b/modules/video_capture/device_info_impl.h
@@ -21,18 +21,17 @@
class DeviceInfoImpl : public VideoCaptureModule::DeviceInfo {
public:
DeviceInfoImpl();
- virtual ~DeviceInfoImpl(void);
- virtual int32_t NumberOfCapabilities(const char* deviceUniqueIdUTF8);
- virtual int32_t GetCapability(const char* deviceUniqueIdUTF8,
- const uint32_t deviceCapabilityNumber,
- VideoCaptureCapability& capability);
+ ~DeviceInfoImpl(void) override;
+ int32_t NumberOfCapabilities(const char* deviceUniqueIdUTF8) override;
+ int32_t GetCapability(const char* deviceUniqueIdUTF8,
+ const uint32_t deviceCapabilityNumber,
+ VideoCaptureCapability& capability) override;
- virtual int32_t GetBestMatchedCapability(
- const char* deviceUniqueIdUTF8,
- const VideoCaptureCapability& requested,
- VideoCaptureCapability& resulting);
- virtual int32_t GetOrientation(const char* deviceUniqueIdUTF8,
- VideoRotation& orientation);
+ int32_t GetBestMatchedCapability(const char* deviceUniqueIdUTF8,
+ const VideoCaptureCapability& requested,
+ VideoCaptureCapability& resulting) override;
+ int32_t GetOrientation(const char* deviceUniqueIdUTF8,
+ VideoRotation& orientation) override;
protected:
/* Initialize this object*/
diff --git a/modules/video_capture/external/device_info_external.cc b/modules/video_capture/external/device_info_external.cc
index cd660e2..5702483 100644
--- a/modules/video_capture/external/device_info_external.cc
+++ b/modules/video_capture/external/device_info_external.cc
@@ -18,29 +18,28 @@
class ExternalDeviceInfo : public DeviceInfoImpl {
public:
ExternalDeviceInfo() {}
- virtual ~ExternalDeviceInfo() {}
- virtual uint32_t NumberOfDevices() { return 0; }
- virtual int32_t DisplayCaptureSettingsDialogBox(
- const char* /*deviceUniqueIdUTF8*/,
- const char* /*dialogTitleUTF8*/,
- void* /*parentWindow*/,
- uint32_t /*positionX*/,
- uint32_t /*positionY*/) {
+ ~ExternalDeviceInfo() override {}
+ uint32_t NumberOfDevices() override { return 0; }
+ int32_t DisplayCaptureSettingsDialogBox(const char* /*deviceUniqueIdUTF8*/,
+ const char* /*dialogTitleUTF8*/,
+ void* /*parentWindow*/,
+ uint32_t /*positionX*/,
+ uint32_t /*positionY*/) override {
return -1;
}
- virtual int32_t GetDeviceName(uint32_t deviceNumber,
- char* deviceNameUTF8,
- uint32_t deviceNameLength,
- char* deviceUniqueIdUTF8,
- uint32_t deviceUniqueIdUTF8Length,
- char* productUniqueIdUTF8 = 0,
- uint32_t productUniqueIdUTF8Length = 0) {
+ int32_t GetDeviceName(uint32_t deviceNumber,
+ char* deviceNameUTF8,
+ uint32_t deviceNameLength,
+ char* deviceUniqueIdUTF8,
+ uint32_t deviceUniqueIdUTF8Length,
+ char* productUniqueIdUTF8 = 0,
+ uint32_t productUniqueIdUTF8Length = 0) override {
return -1;
}
- virtual int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8) {
+ int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8) override {
return 0;
}
- virtual int32_t Init() { return 0; }
+ int32_t Init() override { return 0; }
};
VideoCaptureModule::DeviceInfo* VideoCaptureImpl::CreateDeviceInfo() {
diff --git a/modules/video_capture/linux/device_info_linux.cc b/modules/video_capture/linux/device_info_linux.cc
index 9ced0ae..7c43877 100644
--- a/modules/video_capture/linux/device_info_linux.cc
+++ b/modules/video_capture/linux/device_info_linux.cc
@@ -192,6 +192,15 @@
return size;
}
+int32_t DeviceInfoLinux::DisplayCaptureSettingsDialogBox(
+ const char* /*deviceUniqueIdUTF8*/,
+ const char* /*dialogTitleUTF8*/,
+ void* /*parentWindow*/,
+ uint32_t /*positionX*/,
+ uint32_t /*positionY*/) {
+ return -1;
+}
+
bool DeviceInfoLinux::IsDeviceNameMatches(const char* name,
const char* deviceUniqueIdUTF8) {
if (strncmp(deviceUniqueIdUTF8, name, strlen(name)) == 0)
diff --git a/modules/video_capture/linux/device_info_linux.h b/modules/video_capture/linux/device_info_linux.h
index fc7b4d8..955739d 100644
--- a/modules/video_capture/linux/device_info_linux.h
+++ b/modules/video_capture/linux/device_info_linux.h
@@ -19,30 +19,27 @@
class DeviceInfoLinux : public DeviceInfoImpl {
public:
DeviceInfoLinux();
- virtual ~DeviceInfoLinux();
- virtual uint32_t NumberOfDevices();
- virtual int32_t GetDeviceName(uint32_t deviceNumber,
- char* deviceNameUTF8,
- uint32_t deviceNameLength,
- char* deviceUniqueIdUTF8,
- uint32_t deviceUniqueIdUTF8Length,
- char* productUniqueIdUTF8 = 0,
- uint32_t productUniqueIdUTF8Length = 0);
+ ~DeviceInfoLinux() override;
+ uint32_t NumberOfDevices() override;
+ int32_t GetDeviceName(uint32_t deviceNumber,
+ char* deviceNameUTF8,
+ uint32_t deviceNameLength,
+ char* deviceUniqueIdUTF8,
+ uint32_t deviceUniqueIdUTF8Length,
+ char* productUniqueIdUTF8 = 0,
+ uint32_t productUniqueIdUTF8Length = 0) override;
/*
* Fills the membervariable _captureCapabilities with capabilites for the
* given device name.
*/
- virtual int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8);
- virtual int32_t DisplayCaptureSettingsDialogBox(
- const char* /*deviceUniqueIdUTF8*/,
- const char* /*dialogTitleUTF8*/,
- void* /*parentWindow*/,
- uint32_t /*positionX*/,
- uint32_t /*positionY*/) {
- return -1;
- }
+ int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8) override;
+ int32_t DisplayCaptureSettingsDialogBox(const char* /*deviceUniqueIdUTF8*/,
+ const char* /*dialogTitleUTF8*/,
+ void* /*parentWindow*/,
+ uint32_t /*positionX*/,
+ uint32_t /*positionY*/) override;
int32_t FillCapabilities(int fd);
- int32_t Init();
+ int32_t Init() override;
private:
bool IsDeviceNameMatches(const char* name, const char* deviceUniqueIdUTF8);
diff --git a/modules/video_capture/linux/video_capture_linux.h b/modules/video_capture/linux/video_capture_linux.h
index 88455f9..9d497a5 100644
--- a/modules/video_capture/linux/video_capture_linux.h
+++ b/modules/video_capture/linux/video_capture_linux.h
@@ -23,12 +23,12 @@
class VideoCaptureModuleV4L2 : public VideoCaptureImpl {
public:
VideoCaptureModuleV4L2();
- virtual ~VideoCaptureModuleV4L2();
- virtual int32_t Init(const char* deviceUniqueId);
- virtual int32_t StartCapture(const VideoCaptureCapability& capability);
- virtual int32_t StopCapture();
- virtual bool CaptureStarted();
- virtual int32_t CaptureSettings(VideoCaptureCapability& settings);
+ ~VideoCaptureModuleV4L2() override;
+ int32_t Init(const char* deviceUniqueId);
+ int32_t StartCapture(const VideoCaptureCapability& capability) override;
+ int32_t StopCapture() override;
+ bool CaptureStarted() override;
+ int32_t CaptureSettings(VideoCaptureCapability& settings) override;
private:
enum { kNoOfV4L2Bufffers = 4 };
diff --git a/modules/video_capture/objc/device_info.h b/modules/video_capture/objc/device_info.h
index 8802367..479749a 100644
--- a/modules/video_capture/objc/device_info.h
+++ b/modules/video_capture/objc/device_info.h
@@ -21,7 +21,7 @@
class DeviceInfoIos : public DeviceInfoImpl {
public:
DeviceInfoIos();
- virtual ~DeviceInfoIos();
+ ~DeviceInfoIos() override;
// Implementation of DeviceInfoImpl.
int32_t Init() override;
diff --git a/modules/video_capture/objc/video_capture.h b/modules/video_capture/objc/video_capture.h
index 0427d48..a85c93e 100644
--- a/modules/video_capture/objc/video_capture.h
+++ b/modules/video_capture/objc/video_capture.h
@@ -21,7 +21,7 @@
class VideoCaptureIos : public VideoCaptureImpl {
public:
VideoCaptureIos();
- virtual ~VideoCaptureIos();
+ ~VideoCaptureIos() override;
static rtc::scoped_refptr<VideoCaptureModule> Create(
const char* device_unique_id_utf8);
diff --git a/modules/video_capture/test/video_capture_unittest.cc b/modules/video_capture/test/video_capture_unittest.cc
index aed299c..1fa7144 100644
--- a/modules/video_capture/test/video_capture_unittest.cc
+++ b/modules/video_capture/test/video_capture_unittest.cc
@@ -64,7 +64,7 @@
timing_warnings_(0),
rotate_frame_(webrtc::kVideoRotation_0) {}
- ~TestVideoCaptureCallback() {
+ ~TestVideoCaptureCallback() override {
if (timing_warnings_ > 0)
printf("No of timing warnings %d\n", timing_warnings_);
}
@@ -146,7 +146,7 @@
public:
VideoCaptureTest() : number_of_devices_(0) {}
- void SetUp() {
+ void SetUp() override {
device_info_.reset(VideoCaptureFactory::CreateDeviceInfo());
assert(device_info_.get());
number_of_devices_ = device_info_->NumberOfDevices();
@@ -348,7 +348,7 @@
// such as frame rate and picture alarm.
class VideoCaptureExternalTest : public testing::Test {
public:
- void SetUp() {
+ void SetUp() override {
capture_module_ = VideoCaptureFactory::Create(capture_input_interface_);
VideoCaptureCapability capability;
@@ -374,7 +374,7 @@
capture_module_->RegisterCaptureDataCallback(&capture_callback_);
}
- void TearDown() {}
+ void TearDown() override {}
webrtc::VideoCaptureExternal* capture_input_interface_;
rtc::scoped_refptr<VideoCaptureModule> capture_module_;
diff --git a/modules/video_capture/video_capture.h b/modules/video_capture/video_capture.h
index 0231f28..90af86d 100644
--- a/modules/video_capture/video_capture.h
+++ b/modules/video_capture/video_capture.h
@@ -109,7 +109,7 @@
virtual bool GetApplyRotation() = 0;
protected:
- virtual ~VideoCaptureModule(){};
+ ~VideoCaptureModule() override{};
};
} // namespace webrtc
diff --git a/modules/video_capture/video_capture_impl.cc b/modules/video_capture/video_capture_impl.cc
index 97daa90e..53afed0 100644
--- a/modules/video_capture/video_capture_impl.cc
+++ b/modules/video_capture/video_capture_impl.cc
@@ -205,6 +205,25 @@
return 0;
}
+int32_t VideoCaptureImpl::StartCapture(
+ const VideoCaptureCapability& capability) {
+ _requestedCapability = capability;
+ return -1;
+}
+
+int32_t VideoCaptureImpl::StopCapture() {
+ return -1;
+}
+
+bool VideoCaptureImpl::CaptureStarted() {
+ return false;
+}
+
+int32_t VideoCaptureImpl::CaptureSettings(
+ VideoCaptureCapability& /*settings*/) {
+ return -1;
+}
+
int32_t VideoCaptureImpl::SetCaptureRotation(VideoRotation rotation) {
rtc::CritScope cs(&_apiCs);
_rotateFrame = rotation;
@@ -219,6 +238,10 @@
return true;
}
+bool VideoCaptureImpl::GetApplyRotation() {
+ return apply_rotation_;
+}
+
void VideoCaptureImpl::UpdateFrameCount() {
if (_incomingFrameTimesNanos[0] / rtc::kNumNanosecsPerMicrosec == 0) {
// first no shift
diff --git a/modules/video_capture/video_capture_impl.h b/modules/video_capture/video_capture_impl.h
index 7826427..2524eda 100644
--- a/modules/video_capture/video_capture_impl.h
+++ b/modules/video_capture/video_capture_impl.h
@@ -62,7 +62,7 @@
int32_t SetCaptureRotation(VideoRotation rotation) override;
bool SetApplyRotation(bool enable) override;
- bool GetApplyRotation() override { return apply_rotation_; }
+ bool GetApplyRotation() override;
const char* CurrentDeviceName() const override;
@@ -74,19 +74,14 @@
int64_t captureTime = 0) override;
// Platform dependent
- int32_t StartCapture(const VideoCaptureCapability& capability) override {
- _requestedCapability = capability;
- return -1;
- }
- int32_t StopCapture() override { return -1; }
- bool CaptureStarted() override { return false; }
- int32_t CaptureSettings(VideoCaptureCapability& /*settings*/) override {
- return -1;
- }
+ int32_t StartCapture(const VideoCaptureCapability& capability) override;
+ int32_t StopCapture() override;
+ bool CaptureStarted() override;
+ int32_t CaptureSettings(VideoCaptureCapability& /*settings*/) override;
protected:
VideoCaptureImpl();
- virtual ~VideoCaptureImpl();
+ ~VideoCaptureImpl() override;
int32_t DeliverCapturedFrame(VideoFrame& captureFrame);
char* _deviceUniqueId; // current Device unique name;
diff --git a/modules/video_capture/windows/device_info_ds.h b/modules/video_capture/windows/device_info_ds.h
index 6898855..bcb1eab 100644
--- a/modules/video_capture/windows/device_info_ds.h
+++ b/modules/video_capture/windows/device_info_ds.h
@@ -33,31 +33,30 @@
static DeviceInfoDS* Create();
DeviceInfoDS();
- virtual ~DeviceInfoDS();
+ ~DeviceInfoDS() override;
- int32_t Init();
- virtual uint32_t NumberOfDevices();
+ int32_t Init() override;
+ uint32_t NumberOfDevices() override;
/*
* Returns the available capture devices.
*/
- virtual int32_t GetDeviceName(uint32_t deviceNumber,
- char* deviceNameUTF8,
- uint32_t deviceNameLength,
- char* deviceUniqueIdUTF8,
- uint32_t deviceUniqueIdUTF8Length,
- char* productUniqueIdUTF8,
- uint32_t productUniqueIdUTF8Length);
+ int32_t GetDeviceName(uint32_t deviceNumber,
+ char* deviceNameUTF8,
+ uint32_t deviceNameLength,
+ char* deviceUniqueIdUTF8,
+ uint32_t deviceUniqueIdUTF8Length,
+ char* productUniqueIdUTF8,
+ uint32_t productUniqueIdUTF8Length) override;
/*
* Display OS /capture device specific settings dialog
*/
- virtual int32_t DisplayCaptureSettingsDialogBox(
- const char* deviceUniqueIdUTF8,
- const char* dialogTitleUTF8,
- void* parentWindow,
- uint32_t positionX,
- uint32_t positionY);
+ int32_t DisplayCaptureSettingsDialogBox(const char* deviceUniqueIdUTF8,
+ const char* dialogTitleUTF8,
+ void* parentWindow,
+ uint32_t positionX,
+ uint32_t positionY) override;
// Windows specific
@@ -86,7 +85,7 @@
char* productUniqueIdUTF8,
uint32_t productUniqueIdUTF8Length);
- virtual int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8);
+ int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8) override;
private:
ICreateDevEnum* _dsDevEnum;
diff --git a/modules/video_capture/windows/device_info_mf.h b/modules/video_capture/windows/device_info_mf.h
index 984d206..0fd0b1d 100644
--- a/modules/video_capture/windows/device_info_mf.h
+++ b/modules/video_capture/windows/device_info_mf.h
@@ -20,25 +20,24 @@
class DeviceInfoMF : public DeviceInfoImpl {
public:
DeviceInfoMF();
- virtual ~DeviceInfoMF();
+ ~DeviceInfoMF() override;
- int32_t Init();
- virtual uint32_t NumberOfDevices();
+ int32_t Init() override;
+ uint32_t NumberOfDevices() override;
- virtual int32_t GetDeviceName(uint32_t deviceNumber,
- char* deviceNameUTF8,
- uint32_t deviceNameLength,
- char* deviceUniqueIdUTF8,
- uint32_t deviceUniqueIdUTF8Length,
- char* productUniqueIdUTF8,
- uint32_t productUniqueIdUTF8Length);
+ int32_t GetDeviceName(uint32_t deviceNumber,
+ char* deviceNameUTF8,
+ uint32_t deviceNameLength,
+ char* deviceUniqueIdUTF8,
+ uint32_t deviceUniqueIdUTF8Length,
+ char* productUniqueIdUTF8,
+ uint32_t productUniqueIdUTF8Length) override;
- virtual int32_t DisplayCaptureSettingsDialogBox(
- const char* deviceUniqueIdUTF8,
- const char* dialogTitleUTF8,
- void* parentWindow,
- uint32_t positionX,
- uint32_t positionY);
+ int32_t DisplayCaptureSettingsDialogBox(const char* deviceUniqueIdUTF8,
+ const char* dialogTitleUTF8,
+ void* parentWindow,
+ uint32_t positionX,
+ uint32_t positionY) override;
};
} // namespace videocapturemodule
diff --git a/modules/video_capture/windows/sink_filter_ds.h b/modules/video_capture/windows/sink_filter_ds.h
index a73022d..cac6e52 100644
--- a/modules/video_capture/windows/sink_filter_ds.h
+++ b/modules/video_capture/windows/sink_filter_ds.h
@@ -35,11 +35,11 @@
IN CCritSec* pLock,
OUT HRESULT* pHr,
IN LPCWSTR pszName);
- virtual ~CaptureInputPin();
+ ~CaptureInputPin() override;
- HRESULT GetMediaType(IN int iPos, OUT CMediaType* pmt);
- HRESULT CheckMediaType(IN const CMediaType* pmt);
- STDMETHODIMP Receive(IN IMediaSample*);
+ HRESULT GetMediaType(IN int iPos, OUT CMediaType* pmt) override;
+ HRESULT CheckMediaType(IN const CMediaType* pmt) override;
+ STDMETHODIMP Receive(IN IMediaSample*) override;
HRESULT SetMatchingMediaType(const VideoCaptureCapability& capability);
};
@@ -49,7 +49,7 @@
IN LPUNKNOWN punk,
OUT HRESULT* phr,
VideoCaptureExternal& captureObserver);
- virtual ~CaptureSinkFilter();
+ ~CaptureSinkFilter() override;
// --------------------------------------------------------------------
// class methods
@@ -72,11 +72,11 @@
// --------------------------------------------------------------------
// CBaseFilter methods
- int GetPinCount();
- CBasePin* GetPin(IN int Index);
- STDMETHODIMP Pause();
- STDMETHODIMP Stop();
- STDMETHODIMP GetClassID(OUT CLSID* pCLSID);
+ int GetPinCount() override;
+ CBasePin* GetPin(IN int Index) override;
+ STDMETHODIMP Pause() override;
+ STDMETHODIMP Stop() override;
+ STDMETHODIMP GetClassID(OUT CLSID* pCLSID) override;
// --------------------------------------------------------------------
// class factory calls this
static CUnknown* CreateInstance(IN LPUNKNOWN punk, OUT HRESULT* phr);
diff --git a/modules/video_capture/windows/video_capture_ds.h b/modules/video_capture/windows/video_capture_ds.h
index db3d34a..fef9ecd 100644
--- a/modules/video_capture/windows/video_capture_ds.h
+++ b/modules/video_capture/windows/video_capture_ds.h
@@ -33,8 +33,8 @@
* Start/Stop
*
*************************************************************************/
- virtual int32_t StartCapture(const VideoCaptureCapability& capability);
- virtual int32_t StopCapture();
+ int32_t StartCapture(const VideoCaptureCapability& capability) override;
+ int32_t StopCapture() override;
/**************************************************************************
*
@@ -42,11 +42,11 @@
*
**************************************************************************/
- virtual bool CaptureStarted();
- virtual int32_t CaptureSettings(VideoCaptureCapability& settings);
+ bool CaptureStarted() override;
+ int32_t CaptureSettings(VideoCaptureCapability& settings) override;
protected:
- virtual ~VideoCaptureDS();
+ ~VideoCaptureDS() override;
// Help functions
diff --git a/modules/video_capture/windows/video_capture_mf.h b/modules/video_capture/windows/video_capture_mf.h
index ed9c382..9ceb02f 100644
--- a/modules/video_capture/windows/video_capture_mf.h
+++ b/modules/video_capture/windows/video_capture_mf.h
@@ -27,13 +27,13 @@
int32_t Init(const char* device_id);
// Overrides from VideoCaptureImpl.
- virtual int32_t StartCapture(const VideoCaptureCapability& capability);
- virtual int32_t StopCapture();
- virtual bool CaptureStarted();
- virtual int32_t CaptureSettings(VideoCaptureCapability& settings); // NOLINT
+ int32_t StartCapture(const VideoCaptureCapability& capability) override;
+ int32_t StopCapture() override;
+ bool CaptureStarted() override;
+ int32_t CaptureSettings(VideoCaptureCapability& settings) override; // NOLINT
protected:
- virtual ~VideoCaptureMF();
+ ~VideoCaptureMF() override;
};
} // namespace videocapturemodule