Files
StellarX-kaifa/src/StellarX/internal/SxInputProbeInternal.h
T

78 lines
2.0 KiB
C++

#pragma once
#include <cstddef>
#include <cstdint>
#include <windows.h>
struct ExMessage;
namespace StellarX::Internal
{
struct InputProbeWndProcToken
{
std::uint64_t callId = 0;
std::uint64_t enterSequence = 0;
std::uint64_t compositionId = 0;
std::uint32_t callDepth = 0;
UINT message = 0;
bool depthCounted = false;
bool recorded = false;
};
struct InputProbeBatchToken
{
std::uint64_t batchId = 0;
std::uint64_t startedQpcTicks = 0;
std::uint32_t dispatchDepth = 0;
std::uint32_t modalDepth = 0;
bool active = false;
bool modal = false;
bool materialized = false;
};
#if defined(STELLARX_ENABLE_INPUT_PROBE)
void inputProbeAttach(HWND hwnd) noexcept;
void inputProbeDetach(HWND hwnd) noexcept;
InputProbeWndProcToken inputProbeWndProcEnter(
HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) noexcept;
LRESULT inputProbeWndProcLeave(
const InputProbeWndProcToken& token, LRESULT result, bool forwardedToOldProc) noexcept;
InputProbeBatchToken inputProbeHostBatchBegin(HWND hwnd, bool modal) noexcept;
void inputProbeObserveEasyXMessage(
HWND hwnd, InputProbeBatchToken& batch, const ExMessage& message) noexcept;
void inputProbeHostBatchEnd(
HWND hwnd, InputProbeBatchToken& batch, std::size_t processed, bool stopped) noexcept;
void inputProbeFlushAtSafePoint(HWND hwnd) noexcept;
#else
inline void inputProbeAttach(HWND) noexcept {}
inline void inputProbeDetach(HWND) noexcept {}
inline InputProbeWndProcToken inputProbeWndProcEnter(
HWND, UINT, WPARAM, LPARAM) noexcept
{
return {};
}
inline LRESULT inputProbeWndProcLeave(
const InputProbeWndProcToken&, LRESULT result, bool) noexcept
{
return result;
}
inline InputProbeBatchToken inputProbeHostBatchBegin(HWND, bool) noexcept
{
return {};
}
inline void inputProbeObserveEasyXMessage(
HWND, InputProbeBatchToken&, const ExMessage&) noexcept {}
inline void inputProbeHostBatchEnd(
HWND, InputProbeBatchToken&, std::size_t, bool) noexcept {}
inline void inputProbeFlushAtSafePoint(HWND) noexcept {}
#endif
}