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->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)) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue