WIP debugging

This commit is contained in:
wheaney 2026-01-13 15:22:40 -08:00
parent b6454886c9
commit cc5cc49119
5 changed files with 19 additions and 10 deletions

View File

@ -157,9 +157,9 @@ BreezyDesktopEffect::BreezyDesktopEffect()
!m_shmFileWatcher->files().contains(DataView::SHM_PATH)
)) {
m_shmFileWatcher->removePath(DataView::SHM_PATH);
disconnect(m_shmFileWatcher, &QFileSystemWatcher::fileChanged, this, &BreezyDesktopEffect::updatePoseOrientation);
disconnect(m_shmFileWatcher, &QFileSystemWatcher::fileChanged, this, &BreezyDesktopEffect::updatePose);
m_shmFileWatcher->addPath(DataView::SHM_PATH);
connect(m_shmFileWatcher, &QFileSystemWatcher::fileChanged, this, &BreezyDesktopEffect::updatePoseOrientation);
connect(m_shmFileWatcher, &QFileSystemWatcher::fileChanged, this, &BreezyDesktopEffect::updatePose);
}
};
@ -173,7 +173,7 @@ BreezyDesktopEffect::BreezyDesktopEffect()
m_watchdogTimer->setInterval(1000);
connect(m_watchdogTimer, &QTimer::timeout, this, [this]() {
if (!m_enabled) return;
this->updatePoseOrientation();
this->updatePose();
});
m_watchdogTimer->start();
@ -494,7 +494,7 @@ qreal BreezyDesktopEffect::focusedDisplayDistance() const {
void BreezyDesktopEffect::setFocusedDisplayDistance(qreal distance) {
if (distance != m_focusedDisplayDistance) {
m_focusedDisplayDistance = std::clamp(distance, 0.2, m_allDisplaysDistance);
m_focusedDisplayDistance = std::clamp(distance, 0.1, m_allDisplaysDistance);
Q_EMIT focusedDisplayDistanceChanged();
if (m_smoothFollowEnabled) updateDriverSmoothFollowSettings();
@ -507,7 +507,7 @@ qreal BreezyDesktopEffect::allDisplaysDistance() const {
void BreezyDesktopEffect::setAllDisplaysDistance(qreal distance) {
if (distance != m_allDisplaysDistance) {
qreal min = m_zoomOnFocusEnabled ? m_focusedDisplayDistance : 0.2;
qreal min = m_zoomOnFocusEnabled ? m_focusedDisplayDistance : 0.1;
m_allDisplaysDistance = std::clamp(distance, min, 2.5);
Q_EMIT allDisplaysDistanceChanged();
}
@ -529,7 +529,7 @@ qreal BreezyDesktopEffect::displaySize() const {
}
void BreezyDesktopEffect::setDisplaySize(qreal size) {
const qreal clamped = std::clamp(size, 0.5, 2.0);
const qreal clamped = std::clamp(size, 0.1, 4.0);
if (!qFuzzyCompare(clamped, m_displaySize)) {
m_displaySize = clamped;
Q_EMIT displaySizeChanged();
@ -625,7 +625,7 @@ bool BreezyDesktopEffect::checkParityByte(const char* data) {
static qint64 lastConfigUpdate = 0;
static qint64 activatedAt = 0;
void BreezyDesktopEffect::updatePoseOrientation() {
void BreezyDesktopEffect::updatePose() {
// Reentrancy guard: if an update is already in progress, skip
bool expected = false;
if (!m_poseUpdateInProgress.compare_exchange_strong(expected, true)) {

View File

@ -119,7 +119,7 @@ namespace KWin
void disableDriver();
void toggle();
void addVirtualDisplay(QSize size);
void updatePoseOrientation();
void updatePose();
void updateCursorImage();
void updateCursorPos();
QVariantList listVirtualDisplays() const;

View File

@ -31,6 +31,8 @@ Item {
property real clipNear: 10.0
property real clipFar: 10000.0
property int sampleCounter: 0
function ratesOfChange(orientations) {
const e0 = orientations[0].toEulerAngles();
const e1 = orientations[1].toEulerAngles();
@ -60,7 +62,13 @@ Item {
effect.lookAheadOverride
)
);
camera.position = position.times(fovDetails.completeScreenDistancePixels).plus(orientations[0].times(Qt.vector3d(0, 0, -fovDetails.lensDistancePixels)));
camera.position = position.times(fovDetails.fullScreenDistancePixels).plus(orientations[0].times(Qt.vector3d(0, 0, -fovDetails.lensDistancePixels)));
sampleCounter += 1;
if (sampleCounter === 60) {
sampleCounter = 0;
console.log(`Breezy - Camera position: ${camera.position.x.toFixed(2)}, ${camera.position.y.toFixed(2)}, ${camera.position.z.toFixed(2)}; rotation: ${camera.eulerRotation.x.toFixed(2)}, ${camera.eulerRotation.y.toFixed(2)}, ${camera.eulerRotation.z.toFixed(2)}`);
}
}
// how far to look ahead is how old the pose data is plus a constant that is either the default for this device or an override

View File

@ -59,6 +59,7 @@ QtObject {
}
function buildFovDetails(screens, viewportWidth, viewportHeight, viewportDiagonalFOV, lensDistanceRatio, defaultDisplayDistance, wrappingChoice, distanceAdjustedSize) {
console.log(`Breezy - Building FOV details with viewport ${viewportWidth}x${viewportHeight}, diagonal FOV ${viewportDiagonalFOV} degrees, lens distance ratio ${lensDistanceRatio}, default display distance ${defaultDisplayDistance}, wrapping choice ${wrappingChoice}, distance adjusted size ${distanceAdjustedSize}`);
const aspect = viewportWidth / viewportHeight;
const fovLengths = diagonalToCrossFOVs(degreeToRadian(viewportDiagonalFOV), aspect);

View File

@ -34,6 +34,7 @@ Item {
property var screens: KWinComponents.Workspace.screens.filter(function(screen) {
return developerMode || mirrorPhysicalDisplays || screen.name.includes("BreezyDesktop") || supportedModels.some(model => screen.model.includes(model));
})
property real distanceAdjustedSize: (effect.allDisplaysDistance - effect.lensDistanceRatio) * effect.displaySize
property var sizeAdjustedScreens: screens.map(function(screen) {
const sizeComplement = (1.0 - distanceAdjustedSize) / 2.0;
const sizeViewportOffsetX = sizeComplement * viewportResolution[0];
@ -49,7 +50,6 @@ Item {
model: screen.model
};
})
property real distanceAdjustedSize: (effect.allDisplaysDistance - effect.lensDistanceRatio) *effect.displaySize
property var sizeAdjustedViewport: {
return {
width: viewportResolution[0] * distanceAdjustedSize,