WIP debugging
This commit is contained in:
parent
b6454886c9
commit
cc5cc49119
|
|
@ -157,9 +157,9 @@ BreezyDesktopEffect::BreezyDesktopEffect()
|
||||||
!m_shmFileWatcher->files().contains(DataView::SHM_PATH)
|
!m_shmFileWatcher->files().contains(DataView::SHM_PATH)
|
||||||
)) {
|
)) {
|
||||||
m_shmFileWatcher->removePath(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);
|
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);
|
m_watchdogTimer->setInterval(1000);
|
||||||
connect(m_watchdogTimer, &QTimer::timeout, this, [this]() {
|
connect(m_watchdogTimer, &QTimer::timeout, this, [this]() {
|
||||||
if (!m_enabled) return;
|
if (!m_enabled) return;
|
||||||
this->updatePoseOrientation();
|
this->updatePose();
|
||||||
});
|
});
|
||||||
m_watchdogTimer->start();
|
m_watchdogTimer->start();
|
||||||
|
|
||||||
|
|
@ -494,7 +494,7 @@ qreal BreezyDesktopEffect::focusedDisplayDistance() const {
|
||||||
|
|
||||||
void BreezyDesktopEffect::setFocusedDisplayDistance(qreal distance) {
|
void BreezyDesktopEffect::setFocusedDisplayDistance(qreal distance) {
|
||||||
if (distance != m_focusedDisplayDistance) {
|
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();
|
Q_EMIT focusedDisplayDistanceChanged();
|
||||||
|
|
||||||
if (m_smoothFollowEnabled) updateDriverSmoothFollowSettings();
|
if (m_smoothFollowEnabled) updateDriverSmoothFollowSettings();
|
||||||
|
|
@ -507,7 +507,7 @@ qreal BreezyDesktopEffect::allDisplaysDistance() const {
|
||||||
|
|
||||||
void BreezyDesktopEffect::setAllDisplaysDistance(qreal distance) {
|
void BreezyDesktopEffect::setAllDisplaysDistance(qreal distance) {
|
||||||
if (distance != m_allDisplaysDistance) {
|
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);
|
m_allDisplaysDistance = std::clamp(distance, min, 2.5);
|
||||||
Q_EMIT allDisplaysDistanceChanged();
|
Q_EMIT allDisplaysDistanceChanged();
|
||||||
}
|
}
|
||||||
|
|
@ -529,7 +529,7 @@ qreal BreezyDesktopEffect::displaySize() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreezyDesktopEffect::setDisplaySize(qreal size) {
|
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)) {
|
if (!qFuzzyCompare(clamped, m_displaySize)) {
|
||||||
m_displaySize = clamped;
|
m_displaySize = clamped;
|
||||||
Q_EMIT displaySizeChanged();
|
Q_EMIT displaySizeChanged();
|
||||||
|
|
@ -625,7 +625,7 @@ bool BreezyDesktopEffect::checkParityByte(const char* data) {
|
||||||
|
|
||||||
static qint64 lastConfigUpdate = 0;
|
static qint64 lastConfigUpdate = 0;
|
||||||
static qint64 activatedAt = 0;
|
static qint64 activatedAt = 0;
|
||||||
void BreezyDesktopEffect::updatePoseOrientation() {
|
void BreezyDesktopEffect::updatePose() {
|
||||||
// Reentrancy guard: if an update is already in progress, skip
|
// Reentrancy guard: if an update is already in progress, skip
|
||||||
bool expected = false;
|
bool expected = false;
|
||||||
if (!m_poseUpdateInProgress.compare_exchange_strong(expected, true)) {
|
if (!m_poseUpdateInProgress.compare_exchange_strong(expected, true)) {
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ namespace KWin
|
||||||
void disableDriver();
|
void disableDriver();
|
||||||
void toggle();
|
void toggle();
|
||||||
void addVirtualDisplay(QSize size);
|
void addVirtualDisplay(QSize size);
|
||||||
void updatePoseOrientation();
|
void updatePose();
|
||||||
void updateCursorImage();
|
void updateCursorImage();
|
||||||
void updateCursorPos();
|
void updateCursorPos();
|
||||||
QVariantList listVirtualDisplays() const;
|
QVariantList listVirtualDisplays() const;
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ Item {
|
||||||
property real clipNear: 10.0
|
property real clipNear: 10.0
|
||||||
property real clipFar: 10000.0
|
property real clipFar: 10000.0
|
||||||
|
|
||||||
|
property int sampleCounter: 0
|
||||||
|
|
||||||
function ratesOfChange(orientations) {
|
function ratesOfChange(orientations) {
|
||||||
const e0 = orientations[0].toEulerAngles();
|
const e0 = orientations[0].toEulerAngles();
|
||||||
const e1 = orientations[1].toEulerAngles();
|
const e1 = orientations[1].toEulerAngles();
|
||||||
|
|
@ -60,7 +62,13 @@ Item {
|
||||||
effect.lookAheadOverride
|
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
|
// 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
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ QtObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildFovDetails(screens, viewportWidth, viewportHeight, viewportDiagonalFOV, lensDistanceRatio, defaultDisplayDistance, wrappingChoice, distanceAdjustedSize) {
|
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 aspect = viewportWidth / viewportHeight;
|
||||||
const fovLengths = diagonalToCrossFOVs(degreeToRadian(viewportDiagonalFOV), aspect);
|
const fovLengths = diagonalToCrossFOVs(degreeToRadian(viewportDiagonalFOV), aspect);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ Item {
|
||||||
property var screens: KWinComponents.Workspace.screens.filter(function(screen) {
|
property var screens: KWinComponents.Workspace.screens.filter(function(screen) {
|
||||||
return developerMode || mirrorPhysicalDisplays || screen.name.includes("BreezyDesktop") || supportedModels.some(model => screen.model.includes(model));
|
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) {
|
property var sizeAdjustedScreens: screens.map(function(screen) {
|
||||||
const sizeComplement = (1.0 - distanceAdjustedSize) / 2.0;
|
const sizeComplement = (1.0 - distanceAdjustedSize) / 2.0;
|
||||||
const sizeViewportOffsetX = sizeComplement * viewportResolution[0];
|
const sizeViewportOffsetX = sizeComplement * viewportResolution[0];
|
||||||
|
|
@ -49,7 +50,6 @@ Item {
|
||||||
model: screen.model
|
model: screen.model
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
property real distanceAdjustedSize: (effect.allDisplaysDistance - effect.lensDistanceRatio) *effect.displaySize
|
|
||||||
property var sizeAdjustedViewport: {
|
property var sizeAdjustedViewport: {
|
||||||
return {
|
return {
|
||||||
width: viewportResolution[0] * distanceAdjustedSize,
|
width: viewportResolution[0] * distanceAdjustedSize,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue