Thu, 29 Jun 2017 15:33:29 -0500
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Modern Linux desktops use one of 3 DBus interfaces for querying if
the screensaver is currently active. There's a FreeDesktop one, a
GNOME one, and a KDE one. Rather than querying XScreensaver, which
may not be available, such as with Wayland, this patch ports Pidgin's
idle checking function to use these modern DBus interfaces.
Because Gio includes built-in DBus API, this patch also drops the
guards around pidgin_get_time_idle(), which also re-enables the
Win32 code which wasn't enabled with the previous guards.
| 11907 | 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 | 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 | 5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 6 | * source distribution. | |
| 7 | * | |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 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 | 21 | * |
| 22 | */ | |
| 23 | #include "internal.h" | |
|
12410
98d8abd3db98
[gaim-migrate @ 14717]
Richard Laager <rlaager@pidgin.im>
parents:
12278
diff
changeset
|
24 | #include "gtkidle.h" |
| 11907 | 25 | |
|
13324
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
26 | #ifdef HAVE_IOKIT |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
27 | # include <CoreFoundation/CoreFoundation.h> |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
28 | # include <IOKit/IOKitLib.h> |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
29 | #elif defined _WIN32 |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
30 | # include "gtkwin32dep.h" |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
31 | #endif |
| 11907 | 32 | |
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12252
diff
changeset
|
33 | #include "idle.h" |
| 11907 | 34 | |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
35 | #if !defined(HAVE_IOKIT) && !defined(_WIN32) |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
36 | typedef struct { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
37 | gchar *bus_name; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
38 | gchar *object_path; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
39 | gchar *iface_name; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
40 | } PidginDBusScreenSaverInfo; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
41 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
42 | static const PidginDBusScreenSaverInfo screensavers[] = { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
43 | { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
44 | "org.freedesktop.ScreenSaver", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
45 | "/org/freedesktop/ScreenSaver", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
46 | "org.freedesktop.ScreenSaver" |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
47 | }, { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
48 | "org.gnome.ScreenSaver", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
49 | "/org/gnome/ScreenSaver", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
50 | "org.gnome.ScreenSaver" |
|
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 | "org.kde.ScreenSaver", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
53 | "/org/kde/ScreenSaver", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
54 | "org.kde.ScreenSaver" |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
55 | }, |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
56 | { NULL, NULL, NULL} |
|
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 | #endif /* !HAVE_IOKIT && !_WIN32 */ |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
59 | |
|
35455
216a37403c5b
Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents:
32917
diff
changeset
|
60 | /* |
|
216a37403c5b
Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents:
32917
diff
changeset
|
61 | * pidgin_get_time_idle: |
|
216a37403c5b
Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents:
32917
diff
changeset
|
62 | * |
| 11907 | 63 | * 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
|
64 | * 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
|
65 | * 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
|
66 | * In MacOS X, this is based on keyboard/mouse usage information |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
67 | * 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
|
68 | * MacOS X is handled as a case of Unix. |
| 11907 | 69 | * |
|
35455
216a37403c5b
Fix a bunch of gtk-doc warnings in pidgin
Ankit Vani <a@nevitus.org>
parents:
32917
diff
changeset
|
70 | * Returns: The number of seconds the user has been idle. |
| 11907 | 71 | */ |
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12252
diff
changeset
|
72 | 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
|
73 | pidgin_get_time_idle(void) |
| 11907 | 74 | { |
|
13324
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
75 | # ifdef HAVE_IOKIT |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
76 | /* Query the IOKit API */ |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
77 | |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
78 | static io_service_t macIOsrvc = NULL; |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
79 | CFTypeRef property; |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
80 | uint64_t idle_time = 0; /* nanoseconds */ |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
81 | |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
82 | if (macIOsrvc == NULL) |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
83 | { |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
84 | mach_port_t master; |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
85 | IOMasterPort(MACH_PORT_NULL, &master); |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
86 | macIOsrvc = IOServiceGetMatchingService(master, |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
87 | IOServiceMatching("IOHIDSystem")); |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
88 | } |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
89 | |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
90 | property = IORegistryEntryCreateCFProperty(macIOsrvc, CFSTR("HIDIdleTime"), |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
91 | kCFAllocatorDefault, 0); |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
92 | CFNumberGetValue((CFNumberRef)property, |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
93 | kCFNumberSInt64Type, &idle_time); |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
94 | CFRelease(property); |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
95 | |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
96 | /* convert nanoseconds to seconds */ |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
97 | return idle_time / 1000000000; |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
98 | # else |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
99 | # ifdef _WIN32 |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
100 | /* Query Windows */ |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
101 | return (GetTickCount() - winpidgin_get_lastactive()) / 1000; |
|
13324
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
102 | # else |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
103 | static const PidginDBusScreenSaverInfo *info = screensavers; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
104 | GApplication *app; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
105 | GDBusConnection *conn; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
106 | GVariant *reply = NULL; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
107 | guint32 active_time = 0; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
108 | GError *error = NULL; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
109 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
110 | app = g_application_get_default(); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
111 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
112 | if (app == NULL) { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
113 | purple_debug_error("gtkidle", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
114 | "Unable to retrieve GApplication"); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
115 | return 0; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
116 | } |
|
13324
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
117 | |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
118 | conn = g_application_get_dbus_connection(app); |
| 17129 | 119 | |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
120 | if (conn == NULL) { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
121 | purple_debug_misc("gtkidle", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
122 | "GApplication lacking DBus connection. " |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
123 | "Skip checking ScreenSaver interface"); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
124 | return 0; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
125 | } |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
126 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
127 | while (reply == NULL && info->bus_name != NULL) { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
128 | reply = g_dbus_connection_call_sync(conn, |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
129 | info->bus_name, info->object_path, |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
130 | info->iface_name, "GetActiveTime", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
131 | NULL, G_VARIANT_TYPE("(u)"), |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
132 | 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
|
133 | NULL, &error); |
| 17129 | 134 | |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
135 | if (reply != NULL) { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
136 | break; |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
137 | } |
| 17129 | 138 | |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
139 | 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
|
140 | G_DBUS_ERROR_NOT_SUPPORTED)) { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
141 | purple_debug_info("gtkidle", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
142 | "Querying idle time on '%s' " |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
143 | "unsupported. Trying the next one", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
144 | info->bus_name); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
145 | } 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
|
146 | G_DBUS_ERROR_NAME_HAS_NO_OWNER)) { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
147 | purple_debug_info("gtkidle", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
148 | "Querying idle time on '%s' " |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
149 | "not found. Trying the next one", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
150 | info->bus_name); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
151 | } else { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
152 | purple_debug_error("gtkidle", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
153 | "Querying idle time on '%s' " |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
154 | "error: %s", info->bus_name, |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
155 | error->message); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
156 | } |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
157 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
158 | g_clear_error(&error); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
159 | ++info; |
| 17129 | 160 | } |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
161 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
162 | if (reply == NULL) { |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
163 | purple_debug_warning("gtkidle", |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
164 | "Failed to query ScreenSaver active time: " |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
165 | "No working ScreenSaver interfaces"); |
| 11907 | 166 | return 0; |
|
38578
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
167 | } |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
168 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
169 | g_variant_get(reply, "(u)", &active_time); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
170 | g_variant_unref(reply); |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
171 | |
|
c81f0a8301fe
gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents:
35455
diff
changeset
|
172 | return active_time; |
|
13324
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
173 | # endif /* !_WIN32 */ |
|
8ff1c408ef3e
[gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents:
12410
diff
changeset
|
174 | # endif /* !HAVE_IOKIT */ |
|
12278
21bcbadf956d
[gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12272
diff
changeset
|
175 | } |
| 11907 | 176 | |
| 15884 | 177 | static PurpleIdleUiOps ui_ops = |
| 11907 | 178 | { |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
15931
diff
changeset
|
179 | 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
|
180 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
15931
diff
changeset
|
181 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
15931
diff
changeset
|
182 | NULL, |
|
12278
21bcbadf956d
[gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12272
diff
changeset
|
183 | NULL |
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12252
diff
changeset
|
184 | }; |
| 11907 | 185 | |
| 15884 | 186 | PurpleIdleUiOps * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
187 | pidgin_idle_get_ui_ops() |
| 11907 | 188 | { |
|
12272
4eee92ead973
[gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents:
12252
diff
changeset
|
189 | return &ui_ops; |
| 11907 | 190 | } |