util: fix and move `get_current_time_msec` into a util file
This commit makes `get_current_time_msec` correctly return milliseconds as opposed to microseconds. It also considers the value of `tv_sec`, so we don't lose occasionally go back in time by one second. Finally, the function is moved into `util/time.cc` so that it can be reused elsewhere without having to consider these pitfalls.
This commit is contained in:
parent
dcae6f1431
commit
dc13bb827d
|
@ -20,6 +20,7 @@
|
|||
#include "relative-pointer-unstable-v1-client-protocol.h"
|
||||
#include "backend/wayland.h"
|
||||
#include "util/signal.h"
|
||||
#include "util/time.h"
|
||||
|
||||
static struct wlr_wl_pointer *output_get_pointer(struct wlr_wl_output *output) {
|
||||
struct wlr_input_device *wlr_dev;
|
||||
|
@ -197,12 +198,6 @@ static void keyboard_handle_keymap(void *data, struct wl_keyboard *wl_keyboard,
|
|||
close(fd);
|
||||
}
|
||||
|
||||
static uint32_t get_current_time_msec(void) {
|
||||
struct timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
return now.tv_nsec / 1000;
|
||||
}
|
||||
|
||||
static void keyboard_handle_enter(void *data, struct wl_keyboard *wl_keyboard,
|
||||
uint32_t serial, struct wl_surface *surface, struct wl_array *keys) {
|
||||
struct wlr_input_device *dev = data;
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <wlr/interfaces/wlr_input_device.h>
|
||||
|
||||
#include "util/signal.h"
|
||||
#include "util/time.h"
|
||||
#include "wlr/util/log.h"
|
||||
#include "tablet-unstable-v2-client-protocol.h"
|
||||
|
||||
|
@ -84,12 +85,6 @@ struct wlr_wl_tablet_pad_group {
|
|||
struct wl_list strips; // wlr_wl_tablet_pad_strips::link
|
||||
};
|
||||
|
||||
static uint32_t get_current_time_msec(void) {
|
||||
struct timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
return now.tv_nsec / (1000 * 1000) + now.tv_sec * 1000;
|
||||
}
|
||||
|
||||
static void handle_tablet_pad_ring_source(void *data,
|
||||
struct zwp_tablet_pad_ring_v2 *zwp_tablet_pad_ring_v2,
|
||||
uint32_t source) {
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef UTIL_TIME_H
|
||||
#define UTIL_TIME_H
|
||||
|
||||
/**
|
||||
* Get the current time, in milliseconds.
|
||||
*/
|
||||
uint32_t get_current_time_msec(void);
|
||||
|
||||
#endif
|
|
@ -5,4 +5,5 @@ wlr_files += files(
|
|||
'region.c',
|
||||
'shm.c',
|
||||
'signal.c',
|
||||
'time.c',
|
||||
)
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
#define _POSIX_C_SOURCE 200809L
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "util/time.h"
|
||||
|
||||
uint32_t get_current_time_msec(void) {
|
||||
struct timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
return now.tv_sec * 1000 + now.tv_nsec / 1000000;
|
||||
}
|
Loading…
Reference in New Issue