diff options
Diffstat (limited to 'examples/corelib/ipc/sharedmemory/dialog.cpp')
-rw-r--r-- | examples/corelib/ipc/sharedmemory/dialog.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/examples/corelib/ipc/sharedmemory/dialog.cpp b/examples/corelib/ipc/sharedmemory/dialog.cpp index 67e4f012a3..4e8f93a77b 100644 --- a/examples/corelib/ipc/sharedmemory/dialog.cpp +++ b/examples/corelib/ipc/sharedmemory/dialog.cpp @@ -2,8 +2,12 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "dialog.h" -#include <QFileDialog> + #include <QBuffer> +#include <QFileDialog> +#include <QNativeIpcKey> + +using namespace Qt::StringLiterals; /*! \class Dialog @@ -29,8 +33,9 @@ each button. */ //! [0] + Dialog::Dialog(QWidget *parent) - : QDialog(parent), sharedMemory("QSharedMemoryExample") + : QDialog(parent), sharedMemory(QNativeIpcKey(u"QSharedMemoryExample"_s)) { ui.setupUi(this); connect(ui.loadFromFileButton, &QPushButton::clicked, @@ -89,8 +94,13 @@ void Dialog::loadFromFile() int size = buffer.size(); if (!sharedMemory.create(size)) { - ui.label->setText(tr("Unable to create shared memory segment.")); - return; + if (sharedMemory.error() == QSharedMemory::AlreadyExists) { + sharedMemory.attach(); + } else { + ui.label->setText(tr("Unable to create or attach to shared memory segment: %1") + .arg(sharedMemory.errorString())); + return; + } } sharedMemory.lock(); char *to = (char*)sharedMemory.data(); |