File tree Expand file tree Collapse file tree 2 files changed +13
-13
lines changed
shared/source/os_interface/linux Expand file tree Collapse file tree 2 files changed +13
-13
lines changed Original file line number Diff line number Diff line change 11/*
2- * Copyright (C) 2018-2021 Intel Corporation
2+ * Copyright (C) 2018-2022 Intel Corporation
33 *
44 * SPDX-License-Identifier: MIT
55 *
@@ -66,16 +66,23 @@ inline void DrmGemCloseWorker::close(BufferObject *bo) {
6666 workCount--;
6767}
6868
69+ inline void DrmGemCloseWorker::processQueue (std::queue<BufferObject *> &inputQueue) {
70+ BufferObject *workItem = nullptr ;
71+ while (!inputQueue.empty ()) {
72+ workItem = inputQueue.front ();
73+ inputQueue.pop ();
74+ close (workItem);
75+ }
76+ }
77+
6978void *DrmGemCloseWorker::worker (void *arg) {
7079 DrmGemCloseWorker *self = reinterpret_cast <DrmGemCloseWorker *>(arg);
71- BufferObject *workItem = nullptr ;
7280 std::queue<BufferObject *> localQueue;
7381 std::unique_lock<std::mutex> lock (self->closeWorkerMutex );
7482 lock.unlock ();
7583
7684 while (self->active ) {
7785 lock.lock ();
78- workItem = nullptr ;
7986
8087 while (self->queue .empty () && self->active ) {
8188 self->condition .wait (lock);
@@ -86,19 +93,11 @@ void *DrmGemCloseWorker::worker(void *arg) {
8693 }
8794
8895 lock.unlock ();
89- while (!localQueue.empty ()) {
90- workItem = localQueue.front ();
91- localQueue.pop ();
92- self->close (workItem);
93- }
96+ self->processQueue (localQueue);
9497 }
9598
9699 lock.lock ();
97- while (!self->queue .empty ()) {
98- workItem = self->queue .front ();
99- self->queue .pop ();
100- self->close (workItem);
101- }
100+ self->processQueue (self->queue );
102101
103102 lock.unlock ();
104103 self->workerDone .store (true );
Original file line number Diff line number Diff line change @@ -40,6 +40,7 @@ class DrmGemCloseWorker {
4040 protected:
4141 void close (BufferObject *workItem);
4242 void closeThread ();
43+ void processQueue (std::queue<BufferObject *> &inputQueue);
4344 static void *worker (void *arg);
4445 std::atomic<bool > active{true };
4546
You can’t perform that action at this time.
0 commit comments