Revision control
Copy as Markdown
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "qautoresetevent_win32_p.h"
#include <QtCore/qdebug.h>
#include <QtCore/qt_windows.h>
QT_BEGIN_NAMESPACE
namespace QtPrivate {
QAutoResetEventWin32::QAutoResetEventWin32(QObject *parent)
: QObject{
parent,
},
m_handle{
nullptr,
}
{
m_handle = ::CreateEventW(/*lpEventAttributes=*/0,
/*bManualReset=*/false,
/*bInitialState=*/false,
/*lpName=*/nullptr);
if (!m_handle) {
qCritical() << "CreateEventW failed:" << qt_error_string(GetLastError());
return;
}
connect(&m_notifier, &QWinEventNotifier::activated, this, &QAutoResetEventWin32::activated);
m_notifier.setHandle(m_handle);
m_notifier.setEnabled(true);
}
QAutoResetEventWin32::~QAutoResetEventWin32()
{
if (m_handle)
::CloseHandle(m_handle);
}
bool QAutoResetEventWin32::isValid() const
{
return m_handle;
}
void QAutoResetEventWin32::set()
{
Q_ASSERT(isValid());
bool status = ::SetEvent(m_handle);
if (!status)
qCritical("QAutoResetEvent::set failed");
}
} // namespace QtPrivate
QT_END_NAMESPACE
#include "moc_qautoresetevent_win32_p.cpp"