pidgin/gtkidle.c

Thu, 30 Nov 2023 21:33:32 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 30 Nov 2023 21:33:32 -0600
changeset 42526
c73c0cf2b554
parent 42410
563e7a17c220
child 42575
580339aa47cc
permissions
-rw-r--r--

Remove all of the existing status widgets

None of these work with the new presence system and were going to be removed
sooner or later. I'm opting for sooner as many of them have deprecation
warnings that make the build output difficult to read.

Testing Done:
Ran `ninja turtles` and ran pidgin3 without issues.

Reviewed at https://reviews.imfreedom.org/r/2809/

11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
1 /*
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
2 * Pidgin - Universal Chat Client
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
4 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or modify
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
6 * 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
7 * the Free Software Foundation; either version 2 of the License, or
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
8 * (at your option) any later version.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
9 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful,
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
13 * GNU General Public License for more details.
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
14 *
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
16 * along with this program; if not, see <https://www.gnu.org/licenses/>.
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
17 */
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
18
42410
563e7a17c220 Fix possible clash of config headers
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42068
diff changeset
19 #include <purpleconfig.h>
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
20
12410
98d8abd3db98 [gaim-migrate @ 14717]
Richard Laager <rlaager@pidgin.im>
parents: 12278
diff changeset
21 #include "gtkidle.h"
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
22
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
23 #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
24 /* 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
25 * 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
26 */
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 # 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
28 # 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
29 # 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
30 # 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
31 # 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
32 # 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
33
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
34 # include <CoreFoundation/CoreFoundation.h>
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
35 # include <IOKit/IOKitLib.h>
38580
775bba9b53df gtkidle: Add parentheses around defined preprocessor macro argument
Mike Ruprecht <cmaiku@gmail.com>
parents: 38578
diff changeset
36 #elif defined (_WIN32)
38606
357f1b3c33d9 gtkidle: Include gtkwin32dep.h in its subdirectory
Mike Ruprecht <cmaiku@gmail.com>
parents: 38581
diff changeset
37 # include "win32/gtkwin32dep.h"
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
38 #endif
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
39
40360
e21f3bbcc2a5 Update all of the pidgin code to include purple.h
Gary Kramlich <grim@reaperworld.com>
parents: 40041
diff changeset
40 #include <purple.h>
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
41
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
42 struct _PidginIdle {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
43 GObject parent;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
44 };
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
45
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
46 /******************************************************************************
41152
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
47 * PurpleIdleUi Implementation
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
48 *****************************************************************************/
41152
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
49 #ifdef _WIN32
12272
4eee92ead973 [gaim-migrate @ 14574]
Mark Doliner <markdoliner@pidgin.im>
parents: 12252
diff changeset
50 static time_t
42068
382ecbbf0080 Mark a number of unused parameters as such
Gary Kramlich <grim@reaperworld.com>
parents: 41947
diff changeset
51 pidgin_idle_get_idle_time(G_GNUC_UNUSED PurpleIdleUi *ui) {
41152
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
52 return (GetTickCount() - winpidgin_get_lastactive()) / 1000;
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
53 }
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
54 #endif /* _WIN32 */
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
55
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
56 #ifdef HAVE_IOKIT
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
57 static time_t
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
58 pidgin_idle_get_idle_time(PurpleIdleUi *ui) {
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
59 /* 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
60 double idleSeconds = -1;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
61 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
62 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
63 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
64 if (entry) {
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
65 CFMutableDictionaryRef dict = NULL;
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
66 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
67 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
68 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
69 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
70 if (obj) {
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
71 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
72 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
73 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
74 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
75 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
76 CFRelease(dict);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
77 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
78 IOObjectRelease(entry);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
79 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
80 IOObjectRelease(iter);
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
81 }
da9efbd154f3 replace spaces with tabs for the new idle tracker for macos
Gary Kramlich <grim@reaperworld.com>
parents: 40039
diff changeset
82 return idleSeconds;
41152
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
83 }
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
84 #endif /* HAVE_IOKIT */
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
85
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
86 #if !defined(_WIN32) && !defined(HAVE_IOKIT)
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
87 typedef struct {
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
88 gchar *bus_name;
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
89 gchar *object_path;
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
90 gchar *iface_name;
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
91 } PidginDBusScreenSaverInfo;
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
92
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
93 static const PidginDBusScreenSaverInfo screensavers[] = {
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
94 {
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
95 "org.freedesktop.ScreenSaver",
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
96 "/org/freedesktop/ScreenSaver",
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
97 "org.freedesktop.ScreenSaver"
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
98 }, {
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
99 "org.gnome.ScreenSaver",
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
100 "/org/gnome/ScreenSaver",
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
101 "org.gnome.ScreenSaver"
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
102 }, {
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
103 "org.kde.ScreenSaver",
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
104 "/org/kde/ScreenSaver",
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
105 "org.kde.ScreenSaver"
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
106 },
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
107 };
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
108
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
109 static time_t
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41152
diff changeset
110 pidgin_idle_get_idle_time(G_GNUC_UNUSED PurpleIdleUi *ui) {
38581
4a451e6f3c66 gtkidle: Use clearer control structure for checking DBus screensavers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38580
diff changeset
111 static guint idx = 0;
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
112 GApplication *app;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
113 GDBusConnection *conn;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
114 GVariant *reply = NULL;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
115 guint32 active_time = 0;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
116 GError *error = NULL;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
117
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
118 app = g_application_get_default();
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
119
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
120 if (app == NULL) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
121 purple_debug_error("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
122 "Unable to retrieve GApplication");
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
123 return 0;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
124 }
13324
8ff1c408ef3e [gaim-migrate @ 15693]
Richard Laager <rlaager@pidgin.im>
parents: 12410
diff changeset
125
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
126 conn = g_application_get_dbus_connection(app);
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
127
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
128 if (conn == NULL) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
129 purple_debug_misc("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
130 "GApplication lacking DBus connection. "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
131 "Skip checking ScreenSaver interface");
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
132 return 0;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
133 }
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
134
38581
4a451e6f3c66 gtkidle: Use clearer control structure for checking DBus screensavers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38580
diff changeset
135 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
136 const PidginDBusScreenSaverInfo *info = &screensavers[idx];
4a451e6f3c66 gtkidle: Use clearer control structure for checking DBus screensavers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38580
diff changeset
137
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
138 reply = g_dbus_connection_call_sync(conn,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
139 info->bus_name, info->object_path,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
140 info->iface_name, "GetActiveTime",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
141 NULL, G_VARIANT_TYPE("(u)"),
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
142 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
143 NULL, &error);
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
144
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
145 if (reply != NULL) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
146 break;
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
147 }
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
148
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
149 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
150 G_DBUS_ERROR_NOT_SUPPORTED)) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
151 purple_debug_info("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
152 "Querying idle time on '%s' "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
153 "unsupported. Trying the next one",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
154 info->bus_name);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
155 } 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
156 G_DBUS_ERROR_NAME_HAS_NO_OWNER)) {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
157 purple_debug_info("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
158 "Querying idle time on '%s' "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
159 "not found. Trying the next one",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
160 info->bus_name);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
161 } else {
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
162 purple_debug_error("gtkidle",
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
163 "Querying idle time on '%s' "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
164 "error: %s", info->bus_name,
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
165 error->message);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
166 }
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 g_clear_error(&error);
17129
0d4fb3e148bb Part of a patch from:
Richard Laager <rlaager@pidgin.im>
parents: 16752
diff changeset
169 }
38578
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 if (reply == NULL) {
41134
138d55c90767 Adjust some debug levels which were throwing warning messages when they shouldn't have
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
172 purple_debug_info("gtkidle",
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
173 "Failed to query ScreenSaver active time: "
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
174 "No working ScreenSaver interfaces");
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
175 return 0;
38578
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
176 }
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
177
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
178 g_variant_get(reply, "(u)", &active_time);
c81f0a8301fe gtkidle: Port XScreensaver to DBus ScreenSaver interfaces
Mike Ruprecht <cmaiku@gmail.com>
parents: 35455
diff changeset
179 g_variant_unref(reply);
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 return active_time;
12278
21bcbadf956d [gaim-migrate @ 14582]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12272
diff changeset
182 }
41152
1dda9fb5d8ae Separate the preproc mess of gtkidle out from a single function to multiple functions
Gary Kramlich <grim@reaperworld.com>
parents: 41136
diff changeset
183 #endif /* !defined(_WIN32) && !defined(HAVE_IOKIT) */
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
184
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
185 static void
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
186 pidgin_idle_purple_ui_init(PurpleIdleUiInterface *iface) {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
187 iface->get_idle_time = pidgin_idle_get_idle_time;
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
188 }
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
189
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
190 /******************************************************************************
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
191 * GObject Implementation
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
192 *****************************************************************************/
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
193 G_DEFINE_TYPE_EXTENDED(
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
194 PidginIdle,
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
195 pidgin_idle,
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
196 G_TYPE_OBJECT,
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
197 0,
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
198 G_IMPLEMENT_INTERFACE(
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
199 PURPLE_TYPE_IDLE_UI,
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
200 pidgin_idle_purple_ui_init
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
201 )
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
202 );
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
203
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
204 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41152
diff changeset
205 pidgin_idle_init(G_GNUC_UNUSED PidginIdle *idle) {
11907
de3ea77afe3c [gaim-migrate @ 14198]
Evan Schoenberg <evands@pidgin.im>
parents:
diff changeset
206 }
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
207
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
208 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41152
diff changeset
209 pidgin_idle_class_init(G_GNUC_UNUSED PidginIdleClass *klass) {
41136
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
210 }
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
211
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
212 /******************************************************************************
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
213 * Public API
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
214 *****************************************************************************/
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
215 PurpleIdleUi *
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
216 pidgin_idle_new(void) {
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
217 return g_object_new(PIDGIN_TYPE_IDLE, NULL);
5397330041d6 Replace PurpleIdleUiOps with the PurpleIdleUi Interface
Gary Kramlich <grim@reaperworld.com>
parents: 41134
diff changeset
218 }

mercurial