[OE-core] [PATCH] recipes-qt: add fix for QWSLock on qt4e

Laszlo Papp lpapp at kde.org
Sat Aug 24 19:15:12 UTC 2013


This is strange. According to the bugtracker it should be in 4.8.5
already... and the recipe seems to be about 4.8.5. It needs more
investigation.


On Sat, Aug 24, 2013 at 8:13 PM, Saul Wold <sgw at linux.intel.com> wrote:

> On 08/24/2013 09:49 AM, Eric Nelson wrote:
>
>> This patch adds a patch for Qt-Embedded to only
>> destroy semaphores in the process which created
>> them.
>>
>> Original patch by Neil Jerram for the OpenMoko project:
>>         http://lists.openmoko.org/**pipermail/community/2012-**
>> November/067806.html<http://lists.openmoko.org/pipermail/community/2012-November/067806.html>
>>
>> See also Bug 31254:
>> https://bugreports.qt-project.**org/browse/QTBUG-31254<https://bugreports.qt-project.org/browse/QTBUG-31254>
>>
>> Signed-off-by: Eric Nelson <eric.nelson at boundarydevices.**com<eric.nelson at boundarydevices.com>
>> >
>>
> Besides this, we need an Upstream-Status: Tag, this is either a Backport
> or Submitted maybe?
>
> Sau!
>
>
>  ---
>>   meta/recipes-qt/qt4/qt4-4.8.5.**inc                  |  1 +
>>   ...-Only-destroy-semaphores-**in-process-owner.patch | 77
>> ++++++++++++++++++++++
>>   2 files changed, 78 insertions(+)
>>   create mode 100644 meta/recipes-qt/qt4/qt4-4.8.5/**
>> 0028-QWSLock-Only-destroy-**semaphores-in-process-owner.**patch
>>
>> diff --git a/meta/recipes-qt/qt4/qt4-4.8.**5.inc
>> b/meta/recipes-qt/qt4/qt4-4.8.**5.inc
>> index 95a14f3..be16bff 100644
>> --- a/meta/recipes-qt/qt4/qt4-4.8.**5.inc
>> +++ b/meta/recipes-qt/qt4/qt4-4.8.**5.inc
>> @@ -24,6 +24,7 @@ SRC_URI = "http://download.qt-project.**
>> org/official_releases/qt/4.8/$**{PV}/qt-ever<http://download.qt-project.org/official_releases/qt/4.8/$%7BPV%7D/qt-ever>
>>              file://0022-Fix-drawing-of-0-**width-polylines-from-outside-
>> **the-de.patch \
>>              file://0023-QHttpMultiPart-**fix-data-corruption-in-**readData-metho.patch
>> \
>>              file://0027-tools.pro-disable-**qmeegographicssystemhelper.*
>> *patch \
>> +           file://0028-QWSLock-Only-**destroy-semaphores-in-process-**owner.patch
>> \
>>              file://g++.conf \
>>              file://linux.conf \
>>              "
>> diff --git a/meta/recipes-qt/qt4/qt4-4.8.**5/0028-QWSLock-Only-destroy-**
>> semaphores-in-process-owner.**patch b/meta/recipes-qt/qt4/qt4-4.8.**
>> 5/0028-QWSLock-Only-destroy-**semaphores-in-process-owner.**patch
>> new file mode 100644
>> index 0000000..d67a746
>> --- /dev/null
>> +++ b/meta/recipes-qt/qt4/qt4-4.8.**5/0028-QWSLock-Only-destroy-**
>> semaphores-in-process-owner.**patch
>> @@ -0,0 +1,77 @@
>> +From 9af565935d16ecf8a8c04b5ea850dd**b34a7c1294 Mon Sep 17 00:00:00 2001
>> +From: Eric Nelson <eric.nelson at boundarydevices.**com<eric.nelson at boundarydevices.com>
>> >
>> +Date: Mon, 12 Aug 2013 11:54:05 -0700
>> +Subject: [PATCH] QWSLock: Only destroy semaphores in process owner
>> +
>> +This fixes the case when QT_POSIX_IPC is not defined.
>> +
>> +Original patch by Neil Jerram for the OpenMoko project:
>> +       http://lists.openmoko.org/**pipermail/community/2012-**
>> November/067806.html<http://lists.openmoko.org/pipermail/community/2012-November/067806.html>
>> +
>> +See also Bug 31254:
>> +       https://bugreports.qt-project.**org/browse/QTBUG-31254<https://bugreports.qt-project.org/browse/QTBUG-31254>
>> +
>> +Signed-off-by: Eric Nelson <eric.nelson at boundarydevices.**com<eric.nelson at boundarydevices.com>
>> >
>> +---
>> + src/gui/embedded/qwslock.cpp | 13 +++++++++----
>> + src/gui/embedded/qwslock_p.h |  2 +-
>> + 2 files changed, 10 insertions(+), 5 deletions(-)
>> +
>> +diff --git a/src/gui/embedded/qwslock.cpp b/src/gui/embedded/qwslock.cpp
>> +index 3f8f306..cd6a48d 100644
>> +--- a/src/gui/embedded/qwslock.cpp
>> ++++ b/src/gui/embedded/qwslock.cpp
>> +@@ -83,9 +83,12 @@ QWSLock::QWSLock(int id) : semId(id)
>> +     QWSSignalHandler::instance()->**addWSLock(this);
>> + #endif
>> +
>> ++    owned = false;
>> ++
>> + #ifndef QT_POSIX_IPC
>> +     if (semId == -1) {
>> +         semId = semget(IPC_PRIVATE, 3, IPC_CREAT | 0666);
>> ++        owned = true;
>> +         if (semId == -1) {
>> +             perror("QWSLock::QWSLock");
>> +             qFatal("Unable to create semaphore");
>> +@@ -100,7 +103,6 @@ QWSLock::QWSLock(int id) : semId(id)
>> +     }
>> + #else
>> +     sems[0] = sems[1] = sems[2] = SEM_FAILED;
>> +-    owned = false;
>> +
>> +     if (semId == -1) {
>> +         // ### generate really unique IDs
>> +@@ -134,9 +136,12 @@ QWSLock::~QWSLock()
>> +
>> +     if (semId != -1) {
>> + #ifndef QT_POSIX_IPC
>> +-        qt_semun semval;
>> +-        semval.val = 0;
>> +-        semctl(semId, 0, IPC_RMID, semval);
>> ++
>> ++        if (owned) {
>> ++            qt_semun semval;
>> ++            semval.val = 0;
>> ++            semctl(semId, 0, IPC_RMID, semval);
>> ++        }
>> +         semId = -1;
>> + #else
>> +         // emulate the SEM_UNDO behavior for the BackingStore lock
>> +diff --git a/src/gui/embedded/qwslock_p.h b/src/gui/embedded/qwslock_p.h
>> +index ead7b89..d16b3d5 100644
>> +--- a/src/gui/embedded/qwslock_p.h
>> ++++ b/src/gui/embedded/qwslock_p.h
>> +@@ -86,8 +86,8 @@ private:
>> +     int lockCount[2];
>> + #ifdef QT_POSIX_IPC
>> +     sem_t *sems[3];
>> +-    bool owned;
>> + #endif
>> ++    bool owned;
>> + };
>> +
>> + QT_END_NAMESPACE
>> +--
>> +1.8.1.2
>> +
>>
>>  ______________________________**_________________
> Openembedded-core mailing list
> Openembedded-core at lists.**openembedded.org<Openembedded-core at lists.openembedded.org>
> http://lists.openembedded.org/**mailman/listinfo/openembedded-**core<http://lists.openembedded.org/mailman/listinfo/openembedded-core>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20130824/fa75beb7/attachment-0002.html>


More information about the Openembedded-core mailing list