From patchwork Mon Nov 25 08:44:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Khem Raj X-Patchwork-Id: 180143 Delivered-To: patch@linaro.org Received: by 2002:a92:38d5:0:0:0:0:0 with SMTP id g82csp2854777ilf; Mon, 25 Nov 2019 00:45:44 -0800 (PST) X-Google-Smtp-Source: APXvYqysQolHJMwTxIffDw6wJuYSPCqxl+UI66lqkgCtmndj7tQGgOJlpL5q4lGeD9C/tv+Qkksc X-Received: by 2002:a62:888c:: with SMTP id l134mr15627933pfd.216.1574671544548; Mon, 25 Nov 2019 00:45:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574671544; cv=none; d=google.com; s=arc-20160816; b=y3Pwu5Fqxe7cQnDsKKXZ4xCUSdFtZKK7uRtDMOQCiA/xdQmyj5uBBPGoULeAkGmY+f 02RuKtTLF6+WB+lXlONjwoPDtLCi35AR53FxafH0BM5hA2gNR2G1VGyCyHMfRp0/NDII Vg5gfYfXfg6HFp49HkQOkLqob8VnY/XPSWx3B4GRryXO3H093Qj38UbT2YC/peckodSC c7VCd6zY4TurqYMtqBWPeOvr5WxoViH0pa2kXiDWcfM92KqHZfsH+2lewwtt+GAK9Wdw +RAPp5kycROBd9vjd1xwdUe33uNvDV80nfNojNjdZh3IZuYQsIK2dNKOGgUe7VLBwucN pkQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:sender:content-transfer-encoding:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:references:in-reply-to:message-id:date:to:from :dkim-signature:delivered-to; bh=Ti53hHuG1QCnWpAlkTTz0IuuHo4LUpxBVEWAh7B8R7Q=; b=SOp+vfNiaJf4G+S1C/N1FP6hT+IjgHcalUlzYgPDxyQ/Zari4G9e5b3FYLtbgBuheN exvrS8q7awPdhLf5K1Bg6pWONdYd50yOq++SIWx0lrfYOV7ph2jXjmgsUoR1zjGk1hEk LkZ2iy5ZClXtbhOdtIkgGlMWZ5gWg8SqZxJ7nBkllOnKODiCMSoBP8QxBmmfmZUwd+Hx 0GMu0oGB2JnLVORIB1cWzndbYQz8Q3NKuGI4pwXKbiJxnQ7aofoDnj5V9zjP2LAlxNkE XuxqZ98KGEji9TMrHOVxh3jd37DImSmn1B2VGTJxGW/UNH7ZvqQ7KvOTP3iVYqb1nFyW ncNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Hi8tyAlR; spf=pass (google.com: best guess record for domain of openembedded-core-bounces@lists.openembedded.org designates 140.211.169.62 as permitted sender) smtp.mailfrom=openembedded-core-bounces@lists.openembedded.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from mail.openembedded.org (mail.openembedded.org. [140.211.169.62]) by mx.google.com with ESMTP id t20si6642987plo.322.2019.11.25.00.45.44; Mon, 25 Nov 2019 00:45:44 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of openembedded-core-bounces@lists.openembedded.org designates 140.211.169.62 as permitted sender) client-ip=140.211.169.62; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Hi8tyAlR; spf=pass (google.com: best guess record for domain of openembedded-core-bounces@lists.openembedded.org designates 140.211.169.62 as permitted sender) smtp.mailfrom=openembedded-core-bounces@lists.openembedded.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from ec2-34-214-78-129.us-west-2.compute.amazonaws.com (localhost [127.0.0.1]) by mail.openembedded.org (Postfix) with ESMTP id 620A77FC51; Mon, 25 Nov 2019 08:45:42 +0000 (UTC) X-Original-To: openembedded-core@lists.openembedded.org Delivered-To: openembedded-core@lists.openembedded.org Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by mail.openembedded.org (Postfix) with ESMTP id D2ACA6A441 for ; Mon, 25 Nov 2019 08:45:14 +0000 (UTC) Received: by mail-pl1-f177.google.com with SMTP id bb5so6211784plb.4 for ; Mon, 25 Nov 2019 00:45:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IcZPckZQUtYgQdseBis3+AX6vRGZxrgGzibbnbsfe4U=; b=Hi8tyAlRm/LKT8sayP9MK+a0U5YJ4meASH6qv3Oaaq+EE5FBBrdoS6sKBo05/8p8S2 32V5weKgjx4tP3GyVwVd1WKUUxmGEPC0mw9gtsGlpZCrpDH8aBTlx9ZsCFgVDonUcsJo XKX6MseF7t+8hvbyBW640bQCyNQSFBTAl4Ot29Gv5iGcJxDHdSdbJ/fPTYMEWiKC5dRz eNQqDNGpiA716d1YvyX4xRi8UVEWMheC0eOvrTxNMWmIVxZWxZ0Fj/TjcSE8m/6UaR0M 2DaQsQpYpbwquvL0ST/3+1nbY3TGKr/3Z8LmUY+OSERSYqJ3flANL/PMbJ3rLVp4CjQX CXZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IcZPckZQUtYgQdseBis3+AX6vRGZxrgGzibbnbsfe4U=; b=iq20hha6nUpPrM9gyvoO3ZeP2W87h3FaI7ppI9wGDsHH3kKJoh7Y7RREacm3waLGWo zXaOa7rLYhFl+E7QmcP5SJzcoqmj10+PHQ+tPCIU3o4yb2m4J2Gj3u9F1XA2e4xqq4Lp 3B/a8xAPdOcnqdOcIHUjj+RRD/CarC5rV6cXlzpmICsx71voG1fYs5Ern40/rM0Q96gn H75pq4FOdREEs0tPS6+FAzLtgKC10H50QnyHRa/aowzHT+MwJQOe3WTplizPW6R5zEe5 kfkmKApD78MEi0Mn/JfVMHdl84/pPXJ+6IDoX5HZCMRzLq1W2ywh7rDYM19N9ME2RguZ Zt6w== X-Gm-Message-State: APjAAAUIwaM/Sb4PVMZDYWnMYID8DLzT6O5ivMBR8FUMlcLkd1v1VNhe ulZ/xwDKwRO87h0SzL3GyVN2Lfc7dZE= X-Received: by 2002:a17:902:7287:: with SMTP id d7mr27855472pll.333.1574671515268; Mon, 25 Nov 2019 00:45:15 -0800 (PST) Received: from apollo.hsd1.ca.comcast.net ([2601:646:8500:1c20::d61]) by smtp.gmail.com with ESMTPSA id 136sm7472257pfb.49.2019.11.25.00.45.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Nov 2019 00:45:14 -0800 (PST) From: Khem Raj To: openembedded-core@lists.openembedded.org Date: Mon, 25 Nov 2019 00:44:50 -0800 Message-Id: <20191125084452.1515325-2-raj.khem@gmail.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191125084452.1515325-1-raj.khem@gmail.com> References: <20191125084452.1515325-1-raj.khem@gmail.com> MIME-Version: 1.0 Subject: [OE-core] [PATCH 2/4] libinput: Fix build when using 64bit time_t on 32bit machines X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: openembedded-core-bounces@lists.openembedded.org Errors-To: openembedded-core-bounces@lists.openembedded.org Signed-off-by: Khem Raj --- ...64bit-time_t-for-32bit-architectures.patch | 386 ++++++++++++++++++ .../wayland/libinput_1.14.3.bb | 4 +- 2 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-graphics/wayland/libinput/0001-adjust-for-64bit-time_t-for-32bit-architectures.patch diff --git a/meta/recipes-graphics/wayland/libinput/0001-adjust-for-64bit-time_t-for-32bit-architectures.patch b/meta/recipes-graphics/wayland/libinput/0001-adjust-for-64bit-time_t-for-32bit-architectures.patch new file mode 100644 index 0000000000..344e6aaf8f --- /dev/null +++ b/meta/recipes-graphics/wayland/libinput/0001-adjust-for-64bit-time_t-for-32bit-architectures.patch @@ -0,0 +1,386 @@ +From ab6ce09bfb669177c90cc5c10155eec44e9fc34b Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Sat, 23 Nov 2019 17:23:56 -0800 +Subject: [PATCH] Adjust for 64bit time_t for 32bit architectures + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/libinput/libinput/merge_requests/346] +Signed-off-by: Peter Hutterer +--- + meson.build | 1 + + src/evdev-mt-touchpad-buttons.c | 15 ++++--- + src/evdev.c | 5 ++- + src/util-input-event.h | 69 +++++++++++++++++++++++++++++++++ + tools/libinput-record.c | 16 +++++--- + 5 files changed, 90 insertions(+), 16 deletions(-) + create mode 100644 src/util-input-event.h + +--- a/meson.build ++++ b/meson.build +@@ -220,7 +220,8 @@ endif + ############ libinput-util.a ############ + src_libinput_util = [ + 'src/libinput-util.c', +- 'src/libinput-util.h' ++ 'src/libinput-util.h', ++ 'src/util-input-event.h' + ] + libinput_util = static_library('libinput-util', + src_libinput_util, +--- a/src/evdev-mt-touchpad-buttons.c ++++ b/src/evdev-mt-touchpad-buttons.c +@@ -30,6 +30,7 @@ + #include + #include "linux/input.h" + ++#include "util-input-event.h" + #include "evdev-mt-touchpad.h" + + #define DEFAULT_BUTTON_ENTER_TIMEOUT ms2us(100) +@@ -1145,14 +1146,12 @@ tp_notify_clickpadbutton(struct tp_dispa + if (tp->buttons.trackpoint) { + if (is_topbutton) { + struct evdev_dispatch *dispatch = tp->buttons.trackpoint->dispatch; +- struct input_event event; +- struct input_event syn_report = {{ 0, 0 }, EV_SYN, SYN_REPORT, 0 }; ++ struct input_event event, syn_report; ++ int value; + +- event.time = us2tv(time); +- event.type = EV_KEY; +- event.code = button; +- event.value = (state == LIBINPUT_BUTTON_STATE_PRESSED) ? 1 : 0; +- syn_report.time = event.time; ++ value = (state == LIBINPUT_BUTTON_STATE_PRESSED) ? 1 : 0; ++ event = input_event_init(time, EV_KEY, button, value); ++ syn_report = input_event_init(time, EV_SYN, SYN_REPORT, 0); + dispatch->interface->process(dispatch, + tp->buttons.trackpoint, + &event, +--- a/src/evdev.c ++++ b/src/evdev.c +@@ -44,6 +44,7 @@ + #include "filter.h" + #include "libinput-private.h" + #include "quirks.h" ++#include "util-input-event.h" + + #if HAVE_LIBWACOM + #include +@@ -859,7 +860,7 @@ evdev_print_event(struct evdev_device *d + { + static uint32_t offset = 0; + static uint32_t last_time = 0; +- uint32_t time = us2ms(tv2us(&e->time)); ++ uint32_t time = us2ms(input_event_time(e)); + + if (offset == 0) { + offset = time; +@@ -891,7 +892,7 @@ static inline void + evdev_process_event(struct evdev_device *device, struct input_event *e) + { + struct evdev_dispatch *dispatch = device->dispatch; +- uint64_t time = tv2us(&e->time); ++ uint64_t time = input_event_time(e); + + #if 0 + evdev_print_event(device, e); +--- /dev/null ++++ b/src/util-input-event.h +@@ -0,0 +1,69 @@ ++/* ++ * Copyright © 2019 Red Hat, Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ */ ++ ++#pragma once ++ ++#include "config.h" ++ ++#include "util-time.h" ++#include ++ ++static inline struct input_event ++input_event_init(uint64_t time, ++ unsigned int code, ++ unsigned int type, ++ int value) ++{ ++ struct input_event ev; ++ struct timeval tval = us2tv(time); ++ ++ ev.input_event_sec = tval.tv_sec; ++ ev.input_event_usec = tval.tv_usec; ++ ev.type = type; ++ ev.code = code; ++ ev.value = value; ++ ++ return ev; ++} ++ ++static inline uint64_t ++input_event_time(const struct input_event *e) ++{ ++ struct timeval tval; ++ ++ tval.tv_sec = e->input_event_sec; ++ tval.tv_usec = e->input_event_usec; ++ ++ return tv2us(&tval); ++} ++ ++ ++static inline void ++input_event_set_time(struct input_event *e, ++ uint64_t time) ++{ ++ struct timeval tval = us2tv(time); ++ ++ e->input_event_sec = tval.tv_sec; ++ e->input_event_usec = tval.tv_usec; ++} +--- a/tools/libinput-record.c ++++ b/tools/libinput-record.c +@@ -41,6 +41,7 @@ + #include + + #include "libinput-versionsort.h" ++#include "util-input-event.h" + #include "libinput-util.h" + #include "libinput-version.h" + #include "libinput-git-version.h" +@@ -196,8 +197,9 @@ print_evdev_event(struct record_context + const char *cname; + bool was_modified = false; + char desc[1024]; ++ uint64_t time = input_event_time(ev) - ctx->offset; + +- ev->time = us2tv(tv2us(&ev->time) - ctx->offset); ++ input_event_set_time(ev, time); + + /* Don't leak passwords unless the user wants to */ + if (!ctx->show_keycodes) +@@ -215,7 +217,7 @@ print_evdev_event(struct record_context + static unsigned long last_ms = 0; + unsigned long time, dt; + +- time = us2ms(tv2us(&ev->time)); ++ time = us2ms(input_event_time(ev)); + dt = time - last_ms; + last_ms = time; + +@@ -239,8 +241,8 @@ print_evdev_event(struct record_context + + iprintf(ctx, + "- [%3lu, %6u, %3d, %3d, %6d] # %s\n", +- ev->time.tv_sec, +- (unsigned int)ev->time.tv_usec, ++ ev->input_event_sec, ++ (unsigned int)ev->input_event_usec, + ev->type, + ev->code, + ev->value, +@@ -268,16 +270,18 @@ handle_evdev_frame(struct record_context + while (libevdev_next_event(evdev, + LIBEVDEV_READ_FLAG_NORMAL, + &e) == LIBEVDEV_READ_STATUS_SUCCESS) { ++ uint64_t time; + + if (ctx->offset == 0) +- ctx->offset = tv2us(&e.time); ++ ctx->offset = input_event_time(&e); + + if (d->nevents == d->events_sz) + resize(d->events, d->events_sz); + + event = &d->events[d->nevents++]; + event->type = EVDEV; +- event->time = tv2us(&e.time) - ctx->offset; ++ time = input_event_time(&e); ++ input_event_set_time(&e, time - ctx->offset); + event->u.evdev = e; + count++; + +--- a/src/libinput-private.h ++++ b/src/libinput-private.h +@@ -39,6 +39,7 @@ + + #include "libinput.h" + #include "libinput-util.h" ++#include "util-time.h" + #include "libinput-version.h" + + #if LIBINPUT_VERSION_MICRO >= 90 +--- a/src/libinput-util.h ++++ b/src/libinput-util.h +@@ -206,12 +206,6 @@ clear_bit(unsigned char *array, int bit) + array[bit / 8] &= ~(1 << (bit % 8)); + } + +-static inline void +-msleep(unsigned int ms) +-{ +- usleep(ms * 1000); +-} +- + static inline bool + long_bit_is_set(const unsigned long *array, int bit) + { +@@ -453,53 +447,6 @@ bool + parse_switch_reliability_property(const char *prop, + enum switch_reliability *reliability); + +-static inline uint64_t +-us(uint64_t us) +-{ +- return us; +-} +- +-static inline uint64_t +-ns2us(uint64_t ns) +-{ +- return us(ns / 1000); +-} +- +-static inline uint64_t +-ms2us(uint64_t ms) +-{ +- return us(ms * 1000); +-} +- +-static inline uint64_t +-s2us(uint64_t s) +-{ +- return ms2us(s * 1000); +-} +- +-static inline uint32_t +-us2ms(uint64_t us) +-{ +- return (uint32_t)(us / 1000); +-} +- +-static inline uint64_t +-tv2us(const struct timeval *tv) +-{ +- return s2us(tv->tv_sec) + tv->tv_usec; +-} +- +-static inline struct timeval +-us2tv(uint64_t time) +-{ +- struct timeval tv; +- +- tv.tv_sec = time / ms2us(1000); +- tv.tv_usec = time % ms2us(1000); +- +- return tv; +-} +- + static inline bool + safe_atoi_base(const char *str, int *val, int base) + { +--- /dev/null ++++ b/src/util-time.h +@@ -0,0 +1,84 @@ ++/* ++ * Copyright © 2013-2019 Red Hat, Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ */ ++ ++#pragma once ++ ++#include "config.h" ++ ++#include ++#include ++#include ++#include ++ ++static inline void ++msleep(unsigned int ms) ++{ ++ usleep(ms * 1000); ++} ++ ++static inline uint64_t ++us(uint64_t us) ++{ ++ return us; ++} ++ ++static inline uint64_t ++ns2us(uint64_t ns) ++{ ++ return us(ns / 1000); ++} ++ ++static inline uint64_t ++ms2us(uint64_t ms) ++{ ++ return us(ms * 1000); ++} ++ ++static inline uint64_t ++s2us(uint64_t s) ++{ ++ return ms2us(s * 1000); ++} ++ ++static inline uint32_t ++us2ms(uint64_t us) ++{ ++ return (uint32_t)(us / 1000); ++} ++ ++static inline uint64_t ++tv2us(const struct timeval *tv) ++{ ++ return s2us(tv->tv_sec) + tv->tv_usec; ++} ++ ++static inline struct timeval ++us2tv(uint64_t time) ++{ ++ struct timeval tv; ++ ++ tv.tv_sec = time / ms2us(1000); ++ tv.tv_usec = time % ms2us(1000); ++ ++ return tv; ++} diff --git a/meta/recipes-graphics/wayland/libinput_1.14.3.bb b/meta/recipes-graphics/wayland/libinput_1.14.3.bb index f06a8d28f8..46d46c54ee 100644 --- a/meta/recipes-graphics/wayland/libinput_1.14.3.bb +++ b/meta/recipes-graphics/wayland/libinput_1.14.3.bb @@ -12,7 +12,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=1f2ea9ebff3a2c6d458faf58492efb63" DEPENDS = "libevdev udev mtdev" -SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz" +SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \ + file://0001-adjust-for-64bit-time_t-for-32bit-architectures.patch \ +" SRC_URI[md5sum] = "d052faa64eb6d2e649e582cc0fcf6e32" SRC_URI[sha256sum] = "0feb3a0589709cc1032893bfaf4c49150d5360bd9782bec888f9e4dd9044c5b7"