time: move to stl's clocks and move timer
This commit is contained in:
parent
0e521788bc
commit
877fb5b93a
43 changed files with 392 additions and 248 deletions
|
|
@ -33,8 +33,8 @@ bool CWLCallbackResource::good() {
|
|||
return resource->resource();
|
||||
}
|
||||
|
||||
void CWLCallbackResource::send(timespec* now) {
|
||||
resource->sendDone(now->tv_sec * 1000 + now->tv_nsec / 1000000);
|
||||
void CWLCallbackResource::send(const Time::steady_tp& now) {
|
||||
resource->sendDone(Time::millis(now));
|
||||
}
|
||||
|
||||
CWLRegionResource::CWLRegionResource(SP<CWlRegion> resource_) : resource(resource_) {
|
||||
|
|
@ -323,7 +323,7 @@ void CWLSurfaceResource::sendPreferredScale(int32_t scale) {
|
|||
resource->sendPreferredBufferScale(scale);
|
||||
}
|
||||
|
||||
void CWLSurfaceResource::frame(timespec* now) {
|
||||
void CWLSurfaceResource::frame(const Time::steady_tp& now) {
|
||||
if (callbacks.empty())
|
||||
return;
|
||||
|
||||
|
|
@ -436,9 +436,7 @@ void CWLSurfaceResource::map() {
|
|||
|
||||
mapped = true;
|
||||
|
||||
timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
frame(&now);
|
||||
frame(Time::steadyNow());
|
||||
|
||||
current.bufferDamage = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
pending.bufferDamage = CBox{{}, {INT32_MAX, INT32_MAX}};
|
||||
|
|
@ -565,7 +563,7 @@ void CWLSurfaceResource::updateCursorShm(CRegion damage) {
|
|||
}
|
||||
}
|
||||
|
||||
void CWLSurfaceResource::presentFeedback(timespec* when, PHLMONITOR pMonitor, bool discarded) {
|
||||
void CWLSurfaceResource::presentFeedback(const Time::steady_tp& when, PHLMONITOR pMonitor, bool discarded) {
|
||||
frame(when);
|
||||
auto FEEDBACK = makeShared<CQueuedPresentationData>(self.lock());
|
||||
FEEDBACK->attachMonitor(pMonitor);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
#include "wayland.hpp"
|
||||
#include "../../helpers/signal/Signal.hpp"
|
||||
#include "../../helpers/math/Math.hpp"
|
||||
#include "../../helpers/time/Time.hpp"
|
||||
#include "../types/Buffer.hpp"
|
||||
#include "../types/SurfaceRole.hpp"
|
||||
#include "../types/SurfaceState.hpp"
|
||||
|
|
@ -36,7 +37,7 @@ class CWLCallbackResource {
|
|||
CWLCallbackResource(SP<CWlCallback> resource_);
|
||||
|
||||
bool good();
|
||||
void send(timespec* now);
|
||||
void send(const Time::steady_tp& now);
|
||||
|
||||
private:
|
||||
SP<CWlCallback> resource;
|
||||
|
|
@ -69,7 +70,7 @@ class CWLSurfaceResource {
|
|||
void leave(PHLMONITOR monitor);
|
||||
void sendPreferredTransform(wl_output_transform t);
|
||||
void sendPreferredScale(int32_t scale);
|
||||
void frame(timespec* now);
|
||||
void frame(const Time::steady_tp& now);
|
||||
uint32_t id();
|
||||
void map();
|
||||
void unmap();
|
||||
|
|
@ -104,7 +105,7 @@ class CWLSurfaceResource {
|
|||
|
||||
void breadthfirst(std::function<void(SP<CWLSurfaceResource>, const Vector2D&, void*)> fn, void* data);
|
||||
SP<CWLSurfaceResource> findFirstPreorder(std::function<bool(SP<CWLSurfaceResource>)> fn);
|
||||
void presentFeedback(timespec* when, PHLMONITOR pMonitor, bool discarded = false);
|
||||
void presentFeedback(const Time::steady_tp& when, PHLMONITOR pMonitor, bool discarded = false);
|
||||
void commitState(SSurfaceState& state);
|
||||
|
||||
// returns a pair: found surface (null if not found) and surface local coords.
|
||||
|
|
|
|||
|
|
@ -604,10 +604,7 @@ void CWLDataDeviceProtocol::initiateDrag(WP<CWLDataSourceResource> currentSource
|
|||
if (!box.has_value())
|
||||
return;
|
||||
|
||||
timespec timeNow;
|
||||
clock_gettime(CLOCK_MONOTONIC, &timeNow);
|
||||
|
||||
dnd.focusedDevice->sendMotion(timeNow.tv_sec * 1000 + timeNow.tv_nsec / 1000000, V - box->pos());
|
||||
dnd.focusedDevice->sendMotion(Time::millis(Time::steadyNow()), V - box->pos());
|
||||
LOGM(LOG, "Drag motion {}", V - box->pos());
|
||||
}
|
||||
});
|
||||
|
|
@ -802,7 +799,7 @@ void CWLDataDeviceProtocol::abortDrag() {
|
|||
g_pSeatManager->resendEnterEvents();
|
||||
}
|
||||
|
||||
void CWLDataDeviceProtocol::renderDND(PHLMONITOR pMonitor, timespec* when) {
|
||||
void CWLDataDeviceProtocol::renderDND(PHLMONITOR pMonitor, const Time::steady_tp& when) {
|
||||
if (!dnd.dndSurface || !dnd.dndSurface->current.texture)
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include "wayland.hpp"
|
||||
#include "../../helpers/signal/Signal.hpp"
|
||||
#include "../../helpers/math/Math.hpp"
|
||||
#include "../../helpers/time/Time.hpp"
|
||||
#include "../types/DataDevice.hpp"
|
||||
#include <hyprutils/os/FileDescriptor.hpp>
|
||||
|
||||
|
|
@ -138,7 +139,7 @@ class CWLDataDeviceProtocol : public IWaylandProtocol {
|
|||
virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id);
|
||||
|
||||
// renders and damages the dnd icon, if present
|
||||
void renderDND(PHLMONITOR pMonitor, timespec* when);
|
||||
void renderDND(PHLMONITOR pMonitor, const Time::steady_tp& when);
|
||||
// for inputmgr to force refocus
|
||||
// TODO: move handling to seatmgr
|
||||
bool dndActive();
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "../../devices/IKeyboard.hpp"
|
||||
#include "../../devices/IHID.hpp"
|
||||
#include "../../managers/SeatManager.hpp"
|
||||
#include "../../helpers/time/Time.hpp"
|
||||
#include "../../config/ConfigValue.hpp"
|
||||
#include <algorithm>
|
||||
|
||||
|
|
@ -174,10 +175,8 @@ void CWLPointerResource::sendLeave() {
|
|||
// release all buttons unless we have a dnd going on in which case
|
||||
// the events shall be lost.
|
||||
if (!PROTO::data->dndActive()) {
|
||||
timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
for (auto const& b : pressedButtons) {
|
||||
sendButton(now.tv_sec * 1000 + now.tv_nsec / 1000000, b, WL_POINTER_BUTTON_STATE_RELEASED);
|
||||
sendButton(Time::millis(Time::steadyNow()), b, WL_POINTER_BUTTON_STATE_RELEASED);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue