/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2020, Google Inc. * * object.cpp - Object deletion tests */ #include #include #include #include "test.h" using namespace std; using namespace libcamera; class TestObject : public Object { public: TestObject(unsigned int *count) : deleteCount_(count) { } ~TestObject() { /* Count the deletions from the correct thread. */ if (thread() == Thread::current()) (*deleteCount_)++; } unsigned int *deleteCount_; }; class NewThread : public Thread { public: NewThread(Object *obj) : object_(obj) { } protected: void run() { object_->deleteLater(); } private: Object *object_; }; class ObjectDeleteTest : public Test { protected: int run() { /* * Test that deferred deletion is executed from the object's * thread, not the caller's thread. */ unsigned int count = 0; TestObject *obj = new TestObject(&count); NewThread thread(obj); thread.start(); thread.wait(); Thread::current()->dispatchMessages(Message::Type::DeferredDelete); if (count != 1) { cout << "Failed to dispatch DeferredDelete (" << count << ")" << endl; return TestFail; } /* * Test that multiple calls to deleteLater() delete the object * once only. */ count = 0; obj = new TestObject(&count); obj->deleteLater(); obj->deleteLater(); Thread::current()->dispatchMessages(Message::Type::DeferredDelete); if (count != 1) { cout << "Multiple deleteLater() failed (" << count << ")" << endl; return TestFail; } return TestPass; } }; TEST_REGISTER(ObjectDeleteTest) libcamera.git/commit/src/qcam/assets/feathericons/feathericons.qrc?h=v0.3.1&id=4085372c517e1527114dc4098194c3ae3b973ba0'>commitdiff
blob: c5302040ea4483c4003f3b9fad0eab6e4b8986f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
<!-- SPDX-License-Identifier: GPL-2.0-or-later -->
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
	<file>aperture.svg</file>
	<file>camera-off.svg</file>
	<file>play-circle.svg</file>
	<file>save.svg</file>
	<file>stop-circle.svg</file>
	<file>x-circle.svg</file>
</qresource>
</RCC>