pidgin/gtkidle.c

Mon, 03 Feb 2020 21:15:02 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Mon, 03 Feb 2020 21:15:02 -0600
branch
port-changes-from-branch-2.x.y-to-default
changeset 40277
2f836435c33c
parent 40041
da9efbd154f3
child 40360
e21f3bbcc2a5
permissions
-rw-r--r--

closing merged branch

11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
1 /*
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
2 * pidgin
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
3 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
6 * source distribution.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
7 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
12 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
17 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17129
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
21 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
22 */
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
23 #include "internal.h"
12410
98d8abd3db98 [gaim-migrate @ 14717]
Richard Laager <rlaager@pidgin.im>
parents: 12278
diff changeset
24 #include "gtkidle.h"
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
25
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
26 #ifdef HAVE_IOKIT
40039
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
27 /* HAVE_UNISTD_H must have a value, see
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
28 * https://forums.developer.apple.com/thread/86887
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
29 */
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
30 # ifdef HAVE_UNISTD_H
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
31 # undef HAVE_UNISTD_H
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
32 # define HAVE_UNISTD_H 1
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
33 # else
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
34 # define HAVE_UNISTD_H 0
40038
e2967758a0c4 Move to a newer method for getting the idle time on macos
Gary Kramlich <grim@reaperworld.com>
parents: 38606
diff changeset
35 # endif
40039
dac8511b1992 usr/include/dispatch/dispatch.h on macos has a bad macro test that requires HAVE_UNISTD_H to have a value, this works around it.
Gary Kramlich <grim@reaperworld.com>
parents: 40038
diff changeset
36
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
37 # include <CoreFoundation/CoreFoundation.h>
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
38 # include <IOKit/IOKitLib.h>
38580
775bba9b53df gtkidle: Add parentheses around defined preprocessor macro argument
Mike Ruprecht <cmaiku@gmail.com>
parents: 38578
diff changeset
39 #elif defined (_WIN32)
38606
357f1b3c33d9 gtkidle: Include gtkwin32dep.h in its subdirectory
Mike Ruprecht <cmaiku@gmail.com>
parents: 38581
diff changeset
40 # include "win32/gtkwin32dep.h"
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
41 #endif
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
42
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
43 #include "idle.h"
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
44
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
45 #if !defined(HAVE_IOKIT) && !defined(_WIN32)
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
46 typedef struct {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
47 gchar *bus_name;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
48 gchar *object_path;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
49 gchar *iface_name;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
50 } PidginDBusScreenSaverInfo;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
51
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
52 static const PidginDBusScreenSaverInfo screensavers[] = {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
53 {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
54 "org.freedesktop.ScreenSaver",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
55 "/org/freedesktop/ScreenSaver",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
56 "org.freedesktop.ScreenSaver"
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
57 }, {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
58 "org.gnome.ScreenSaver",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
59 "/org/gnome/ScreenSaver",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
60 "org.gnome.ScreenSaver"
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
61 }, {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
62 "org.kde.ScreenSaver",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
63 "/org/kde/ScreenSaver",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
64 "org.kde.ScreenSaver"
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
65 },
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
66 };
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
67 #endif /* !HAVE_IOKIT && !_WIN32 */
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
68
35455
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 32917
diff changeset
69 /*
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 32917
diff changeset
70 * pidgin_get_time_idle:
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 32917
diff changeset
71 *
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
72 * Get the number of seconds the user has been idle. In Unix-world
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
73 * this is based on the DBus ScreenSaver interfaces. In MS Windows this
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
74 * is based on keyboard/mouse usage information obtained from the OS.
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
75 * In MacOS X, this is based on keyboard/mouse usage information
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
76 * obtained from the OS, if configure detected IOKit. Otherwise,
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
77 * MacOS X is handled as a case of Unix.
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
78 *
35455
216a37403c5b Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents: 32917
diff changeset
79 * Returns: The number of seconds the user has been idle.
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
80 */
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
81 static time_t
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
82 pidgin_get_time_idle(void)
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
83 {
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
84 # ifdef HAVE_IOKIT
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
85 /* Query the IOKit API */
40041
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
86 double idleSeconds = -1;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
87 io_iterator_t iter = 0;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
88 if (IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching("IOHIDSystem"), &iter) == KERN_SUCCESS) {
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
89 io_registry_entry_t entry = IOIteratorNext(iter);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
90 if (entry) {
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
91 CFMutableDictionaryRef dict = NULL;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
92 kern_return_t status;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
93 status = IORegistryEntryCreateCFProperties(entry, &dict, kCFAllocatorDefault, 0);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
94 if (status == KERN_SUCCESS) {
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
95 CFNumberRef obj = CFDictionaryGetValue(dict, CFSTR("HIDIdleTime"));
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
96 if (obj) {
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
97 int64_t nanoseconds = 0;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
98 if (CFNumberGetValue(obj, kCFNumberSInt64Type, &nanoseconds)) {
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
99 idleSeconds = (double) nanoseconds / NSEC_PER_SEC;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
100 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
101 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
102 CFRelease(dict);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
103 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
104 IOObjectRelease(entry);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
105 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
106 IOObjectRelease(iter);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
107 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
108 return idleSeconds;
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
109 # else
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
110 # ifdef _WIN32
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
111 /* Query Windows */
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15562
diff changeset
112 return (GetTickCount() - winpidgin_get_lastactive()) / 1000;
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
113 # else
38581
4a451e6f3c66 gtkidle: Use clearer control structure for checking DBus screensavers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38580
diff changeset
114 static guint idx = 0;
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
115 GApplication *app;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
116 GDBusConnection *conn;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
117 GVariant *reply = NULL;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
118 guint32 active_time = 0;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
119 GError *error = NULL;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
120
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
121 app = g_application_get_default();
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
122
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
123 if (app == NULL) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
124 purple_debug_error("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
125 "Unable to retrieve GApplication");
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
126 return 0;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
127 }
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
128
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
129 conn = g_application_get_dbus_connection(app);
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
130
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
131 if (conn == NULL) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
132 purple_debug_misc("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
133 "GApplication lacking DBus connection. "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
134 "Skip checking ScreenSaver interface");
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
135 return 0;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
136 }
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
137
38581
4a451e6f3c66 gtkidle: Use clearer control structure for checking DBus screensavers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38580
diff changeset
138 for (; idx < G_N_ELEMENTS(screensavers); ++idx) {
4a451e6f3c66 gtkidle: Use clearer control structure for checking DBus screensavers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38580
diff changeset
139 const PidginDBusScreenSaverInfo *info = &screensavers[idx];
4a451e6f3c66 gtkidle: Use clearer control structure for checking DBus screensavers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38580
diff changeset
140
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
141 reply = g_dbus_connection_call_sync(conn,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
142 info->bus_name, info->object_path,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
143 info->iface_name, "GetActiveTime",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
144 NULL, G_VARIANT_TYPE("(u)"),
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
145 G_DBUS_CALL_FLAGS_NO_AUTO_START, 1000,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
146 NULL, &error);
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
147
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
148 if (reply != NULL) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
149 break;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
150 }
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
151
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
152 if (g_error_matches(error, G_DBUS_ERROR,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
153 G_DBUS_ERROR_NOT_SUPPORTED)) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
154 purple_debug_info("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
155 "Querying idle time on '%s' "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
156 "unsupported. Trying the next one",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
157 info->bus_name);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
158 } else if (g_error_matches(error, G_DBUS_ERROR,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
159 G_DBUS_ERROR_NAME_HAS_NO_OWNER)) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
160 purple_debug_info("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
161 "Querying idle time on '%s' "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
162 "not found. Trying the next one",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
163 info->bus_name);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
164 } else {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
165 purple_debug_error("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
166 "Querying idle time on '%s' "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
167 "error: %s", info->bus_name,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
168 error->message);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
169 }
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
170
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
171 g_clear_error(&error);
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
172 }
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
173
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
174 if (reply == NULL) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
175 purple_debug_warning("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
176 "Failed to query ScreenSaver active time: "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
177 "No working ScreenSaver interfaces");
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
178 return 0;
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
179 }
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
180
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
181 g_variant_get(reply, "(u)", &active_time);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
182 g_variant_unref(reply);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
183
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
184 return active_time;
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
185 # endif /* !_WIN32 */
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
186 # endif /* !HAVE_IOKIT */
12278
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
187 }
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
188
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15574
diff changeset
189 static PurpleIdleUiOps ui_ops =
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
190 {
16752
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
191 pidgin_get_time_idle,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
192 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
193 NULL,
e6bcb1628c57 Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents: 15931
diff changeset
194 NULL,
12278
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
195 NULL
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
196 };
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
197
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15574
diff changeset
198 PurpleIdleUiOps *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
199 pidgin_idle_get_ui_ops()
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
200 {
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
201 return &ui_ops;
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
202 }

mercurial