1*4882a593SmuzhiyunUpstream-Status: Backport 2*4882a593SmuzhiyunSigned-off-by: Ross Burton <ross.burton@arm.com> 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunFrom a7e49fefde18ea8d5bada8096d32f23bcfb5a6dc Mon Sep 17 00:00:00 2001 5*4882a593SmuzhiyunFrom: "Federico G. Schwindt" <fgsch@openbsd.org> 6*4882a593SmuzhiyunDate: Mon, 17 Feb 2014 15:48:12 +0100 7*4882a593SmuzhiyunSubject: [PATCH 1/3] Fix crash on 32bit architectures where time_t is 64 bit 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunThis is an ABI change on platforms where sizeof(time_t) doesn't equal 10*4882a593Smuzhiyunsizeof(long). For most platforms this change shouldn't make a difference 11*4882a593Smuzhiyunat present. OpenBSD recently switched to 64bit time_t on all architectures 12*4882a593Smuzhiyunto avoid time_t overflow in 2038 on 32bit machines. 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunThis fix extends to consumers of startup-notification, for instance 15*4882a593Smuzhiyunthe window manager of XFCE, which is how I got involved in this. 16*4882a593SmuzhiyunSee http://mail.xfce.org/pipermail/xfce4-dev/2014-February/030611.html 17*4882a593Smuzhiyunand follow-ups. The XFCE devs pointed out that my patch to fix a 18*4882a593Smuzhiyuncrash in XFCE's window manager depends on this startup-notification patch. 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunSigned-off-by: Julien Danjou <julien@danjou.info> 21*4882a593Smuzhiyun--- 22*4882a593Smuzhiyun libsn/sn-monitor.c | 8 ++++---- 23*4882a593Smuzhiyun libsn/sn-monitor.h | 8 ++++---- 24*4882a593Smuzhiyun 2 files changed, 8 insertions(+), 8 deletions(-) 25*4882a593Smuzhiyun 26*4882a593Smuzhiyundiff --git a/libsn/sn-monitor.c b/libsn/sn-monitor.c 27*4882a593Smuzhiyunindex 2a9ad16..f419bc1 100644 28*4882a593Smuzhiyun--- a/libsn/sn-monitor.c 29*4882a593Smuzhiyun+++ b/libsn/sn-monitor.c 30*4882a593Smuzhiyun@@ -364,8 +364,8 @@ sn_startup_sequence_get_screen (SnStartupSequence *sequence) 31*4882a593Smuzhiyun **/ 32*4882a593Smuzhiyun void 33*4882a593Smuzhiyun sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence, 34*4882a593Smuzhiyun- long *tv_sec, 35*4882a593Smuzhiyun- long *tv_usec) 36*4882a593Smuzhiyun+ time_t *tv_sec, 37*4882a593Smuzhiyun+ suseconds_t *tv_usec) 38*4882a593Smuzhiyun { 39*4882a593Smuzhiyun if (tv_sec) 40*4882a593Smuzhiyun *tv_sec = sequence->initiation_time.tv_sec; 41*4882a593Smuzhiyun@@ -386,8 +386,8 @@ sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence, 42*4882a593Smuzhiyun **/ 43*4882a593Smuzhiyun void 44*4882a593Smuzhiyun sn_startup_sequence_get_last_active_time (SnStartupSequence *sequence, 45*4882a593Smuzhiyun- long *tv_sec, 46*4882a593Smuzhiyun- long *tv_usec) 47*4882a593Smuzhiyun+ time_t *tv_sec, 48*4882a593Smuzhiyun+ suseconds_t *tv_usec) 49*4882a593Smuzhiyun { 50*4882a593Smuzhiyun /* for now the same as get_initiated_time */ 51*4882a593Smuzhiyun if (tv_sec) 52*4882a593Smuzhiyundiff --git a/libsn/sn-monitor.h b/libsn/sn-monitor.h 53*4882a593Smuzhiyunindex b58581f..2f639df 100644 54*4882a593Smuzhiyun--- a/libsn/sn-monitor.h 55*4882a593Smuzhiyun+++ b/libsn/sn-monitor.h 56*4882a593Smuzhiyun@@ -77,11 +77,11 @@ const char* sn_startup_sequence_get_application_id (SnStartupSequence *se 57*4882a593Smuzhiyun int sn_startup_sequence_get_screen (SnStartupSequence *sequence); 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun void sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence, 60*4882a593Smuzhiyun- long *tv_sec, 61*4882a593Smuzhiyun- long *tv_usec); 62*4882a593Smuzhiyun+ time_t *tv_sec, 63*4882a593Smuzhiyun+ suseconds_t *tv_usec); 64*4882a593Smuzhiyun void sn_startup_sequence_get_last_active_time (SnStartupSequence *sequence, 65*4882a593Smuzhiyun- long *tv_sec, 66*4882a593Smuzhiyun- long *tv_usec); 67*4882a593Smuzhiyun+ time_t *tv_sec, 68*4882a593Smuzhiyun+ suseconds_t *tv_usec); 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun void sn_startup_sequence_complete (SnStartupSequence *sequence); 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun-- 73*4882a593Smuzhiyun2.26.2 74*4882a593Smuzhiyun 75*4882a593SmuzhiyunFrom ea9f7e4cc6fd8c08d175ed7774ed2c5bd11c8ef0 Mon Sep 17 00:00:00 2001 76*4882a593SmuzhiyunFrom: Colin Walters <walters@verbum.org> 77*4882a593SmuzhiyunDate: Mon, 17 Feb 2014 14:37:09 -0500 78*4882a593SmuzhiyunSubject: [PATCH 2/3] Add include of <sys/select.h> for previous patch 79*4882a593Smuzhiyun 80*4882a593SmuzhiyunUnfortunately while the standard says that <sys/types.h> is the 81*4882a593Smuzhiyuncorrect header to get suseconds_t, at least with glibc, that requires 82*4882a593Smuzhiyun-DXOPEN_SOURCE. Which is problematic for a public header, because 83*4882a593Smuzhiyunthen all *users* of startup-notification will be required to define 84*4882a593Smuzhiyunthat. 85*4882a593Smuzhiyun 86*4882a593SmuzhiyunPoking around a bit, it looks like at least with glibc, <sys/select.h> 87*4882a593Smuzhiyunwill give us an unconditional define. 88*4882a593Smuzhiyun 89*4882a593SmuzhiyunSigned-off-by: Julien Danjou <julien@danjou.info> 90*4882a593Smuzhiyun--- 91*4882a593Smuzhiyun libsn/sn-monitor.h | 1 + 92*4882a593Smuzhiyun 1 file changed, 1 insertion(+) 93*4882a593Smuzhiyun 94*4882a593Smuzhiyundiff --git a/libsn/sn-monitor.h b/libsn/sn-monitor.h 95*4882a593Smuzhiyunindex 2f639df..cea4e12 100644 96*4882a593Smuzhiyun--- a/libsn/sn-monitor.h 97*4882a593Smuzhiyun+++ b/libsn/sn-monitor.h 98*4882a593Smuzhiyun@@ -28,6 +28,7 @@ 99*4882a593Smuzhiyun #define __SN_MONITOR_H__ 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun #include <libsn/sn-common.h> 102*4882a593Smuzhiyun+#include <sys/select.h> 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun SN_BEGIN_DECLS 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun-- 107*4882a593Smuzhiyun2.26.2 108*4882a593Smuzhiyun 109