Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
geoclue
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
28
Issues
28
List
Boards
Labels
Service Desk
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
geoclue
geoclue
Commits
3a31d260
Commit
3a31d260
authored
Feb 13, 2009
by
Jussi Kukkonen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'last-async-funcs'
parents
dce296a4
0f4e0526
Changes
9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
995 additions
and
287 deletions
+995
-287
geoclue/geoclue-master-client.c
geoclue/geoclue-master-client.c
+144
-12
geoclue/geoclue-master-client.h
geoclue/geoclue-master-client.h
+24
-0
geoclue/geoclue-master.c
geoclue/geoclue-master.c
+55
-0
geoclue/geoclue-master.h
geoclue/geoclue-master.h
+9
-0
geoclue/geoclue-provider.c
geoclue/geoclue-provider.c
+192
-12
geoclue/geoclue-provider.h
geoclue/geoclue-provider.h
+24
-0
src/client.c
src/client.c
+76
-39
test/Makefile.am
test/Makefile.am
+1
-0
test/geoclue-test-gui.c
test/geoclue-test-gui.c
+470
-224
No files found.
geoclue/geoclue-master-client.c
View file @
3a31d260
...
...
@@ -26,11 +26,7 @@
* ...
*
* master = geoclue_master_get_default ();
*
* client = geoclue_master_create_client (master, NULL, NULL);
* if (!client) {
* / * handle error * /
* }
*
* if (!geoclue_master_client_set_requirements (client,
* GEOCLUE_ACCURACY_LEVEL_NONE,
...
...
@@ -80,12 +76,21 @@ enum {
LAST_SIGNAL
};
static
guint32
signals
[
LAST_SIGNAL
]
=
{
0
,
};
#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GEOCLUE_TYPE_MASTER_CLIENT, GeoclueMasterClientPrivate))
G_DEFINE_TYPE_WITH_CODE
(
GeoclueMasterClient
,
geoclue_master_client
,
G_TYPE_OBJECT
,
geoclue_types_init
(););
typedef
struct
_GeoclueMasterClientAsyncData
{
GeoclueMasterClient
*
client
;
GCallback
callback
;
gpointer
userdata
;
}
GeoclueMasterClientAsyncData
;
static
void
finalize
(
GObject
*
object
)
{
...
...
@@ -301,6 +306,65 @@ geoclue_master_client_set_requirements (GeoclueMasterClient *client,
return
TRUE
;
}
static
void
set_requirements_callback
(
DBusGProxy
*
proxy
,
GError
*
error
,
GeoclueMasterClientAsyncData
*
data
)
{
(
*
(
GeoclueSetRequirementsCallback
)
data
->
callback
)
(
data
->
client
,
error
,
data
->
userdata
);
g_free
(
data
);
}
/**
* GeoclueSetRequirementsCallback:
* @client: A #GeoclueMasterClient object
* @error: Error as #Gerror (may be %NULL)
* @userdata: User data pointer set in geoclue_master_client_set_requirements_async()
*
* Callback function for geoclue_master_client_set_requirements_async().
*/
/**
* geoclue_master_client_set_requirements_async:
* @client: A #GeoclueMasterClient
* @min_accuracy: The required minimum accuracy as a #GeoclueAccuracyLevel.
* @min_time: The minimum time between update signals (currently not implemented)
* @require_updates: Whether the updates (signals) are required. Only applies to interfaces with signals
* @allowed_resources: The resources that are allowed to be used as a #GeoclueResourceFlags
* @callback: #GeoclueSetRequirementsCallback function to call when requirements have been set
* @userdata: User data pointer
*
* Asynchronous version of geoclue_master_client_set_requirements().
*/
void
geoclue_master_client_set_requirements_async
(
GeoclueMasterClient
*
client
,
GeoclueAccuracyLevel
min_accuracy
,
int
min_time
,
gboolean
require_updates
,
GeoclueResourceFlags
allowed_resources
,
GeoclueSetRequirementsCallback
callback
,
gpointer
userdata
)
{
GeoclueMasterClientPrivate
*
priv
=
GET_PRIVATE
(
client
);
GeoclueMasterClientAsyncData
*
data
;
data
=
g_new
(
GeoclueMasterClientAsyncData
,
1
);
data
->
client
=
client
;
data
->
callback
=
G_CALLBACK
(
callback
);
data
->
userdata
=
userdata
;
org_freedesktop_Geoclue_MasterClient_set_requirements_async
(
priv
->
proxy
,
min_accuracy
,
min_time
,
require_updates
,
allowed_resources
,
(
org_freedesktop_Geoclue_MasterClient_set_requirements_reply
)
set_requirements_callback
,
data
);
}
/**
* geoclue_master_client_create_address:
* @client: A #GeoclueMasterClient
...
...
@@ -326,12 +390,6 @@ geoclue_master_client_create_address (GeoclueMasterClient *client,
return
geoclue_address_new
(
GEOCLUE_MASTER_DBUS_SERVICE
,
priv
->
object_path
);
}
typedef
struct
_GeoclueMasterClientAsyncData
{
GeoclueMasterClient
*
client
;
GCallback
callback
;
gpointer
userdata
;
}
GeoclueMasterClientAsyncData
;
static
void
address_start_async_callback
(
DBusGProxy
*
proxy
,
GError
*
error
,
...
...
@@ -352,7 +410,7 @@ address_start_async_callback (DBusGProxy *proxy,
}
/**
*
G
reateAddressCallback:
*
C
reateAddressCallback:
* @client: A #GeoclueMasterClient object
* @address: returned #GeoclueAddress
* @error: Error as #Gerror (may be %NULL)
...
...
@@ -435,7 +493,7 @@ position_start_async_callback (DBusGProxy *proxy,
}
/**
*
G
reatePositionCallback:
*
C
reatePositionCallback:
* @client: A #GeoclueMasterClient object
* @position: returned #GeocluePosition
* @error: Error as #Gerror (may be %NULL)
...
...
@@ -504,6 +562,54 @@ gboolean geoclue_master_client_get_address_provider (GeoclueMasterClient *clien
return
TRUE
;
}
static
void
get_provider_callback
(
DBusGProxy
*
proxy
,
char
*
name
,
char
*
description
,
char
*
service
,
char
*
path
,
GError
*
error
,
GeoclueMasterClientAsyncData
*
data
)
{
(
*
(
GeoclueGetProviderCallback
)
data
->
callback
)
(
data
->
client
,
name
,
description
,
service
,
path
,
error
,
data
->
userdata
);
g_free
(
data
);
}
/**
* geoclue_master_client_get_address_provider_async:
* @client: A #GeoclueMasterClient
* @callback: A #GeoclueGetProviderCallback function that will be called when return values are available
* @userdata: pointer for user specified data
*
* Gets name and other information for the currently used address provider asynchronously.
*/
void
geoclue_master_client_get_address_provider_async
(
GeoclueMasterClient
*
client
,
GeoclueGetProviderCallback
callback
,
gpointer
userdata
)
{
GeoclueMasterClientPrivate
*
priv
=
GET_PRIVATE
(
client
);
GeoclueMasterClientAsyncData
*
data
;
data
=
g_new
(
GeoclueMasterClientAsyncData
,
1
);
data
->
client
=
client
;
data
->
callback
=
G_CALLBACK
(
callback
);
data
->
userdata
=
userdata
;
org_freedesktop_Geoclue_MasterClient_get_address_provider_async
(
priv
->
proxy
,
(
org_freedesktop_Geoclue_MasterClient_get_address_provider_reply
)
get_provider_callback
,
data
);
}
/**
* geoclue_master_client_get_position_provider:
* @client: A #GeoclueMasterClient
...
...
@@ -535,3 +641,29 @@ gboolean geoclue_master_client_get_position_provider (GeoclueMasterClient *clie
return
TRUE
;
}
/**
* geoclue_master_client_get_position_provider_async:
* @client: A #GeoclueMasterClient
* @callback: A #GeoclueGetProviderCallback function that will be called when return values are available
* @userdata: pointer for user specified data
*
* Gets name and other information for the currently used position provider asynchronously.
*/
void
geoclue_master_client_get_position_provider_async
(
GeoclueMasterClient
*
client
,
GeoclueGetProviderCallback
callback
,
gpointer
userdata
)
{
GeoclueMasterClientPrivate
*
priv
=
GET_PRIVATE
(
client
);
GeoclueMasterClientAsyncData
*
data
;
data
=
g_new
(
GeoclueMasterClientAsyncData
,
1
);
data
->
client
=
client
;
data
->
callback
=
G_CALLBACK
(
callback
);
data
->
userdata
=
userdata
;
org_freedesktop_Geoclue_MasterClient_get_position_provider_async
(
priv
->
proxy
,
(
org_freedesktop_Geoclue_MasterClient_get_position_provider_reply
)
get_provider_callback
,
data
);
}
geoclue/geoclue-master-client.h
View file @
3a31d260
...
...
@@ -49,6 +49,16 @@ gboolean geoclue_master_client_set_requirements (GeoclueMasterClient *client,
gboolean
require_updates
,
GeoclueResourceFlags
allowed_resources
,
GError
**
error
);
typedef
void
(
*
GeoclueSetRequirementsCallback
)
(
GeoclueMasterClient
*
client
,
GError
*
error
,
gpointer
userdata
);
void
geoclue_master_client_set_requirements_async
(
GeoclueMasterClient
*
client
,
GeoclueAccuracyLevel
min_accuracy
,
int
min_time
,
gboolean
require_updates
,
GeoclueResourceFlags
allowed_resources
,
GeoclueSetRequirementsCallback
callback
,
gpointer
userdata
);
GeoclueAddress
*
geoclue_master_client_create_address
(
GeoclueMasterClient
*
client
,
GError
**
error
);
typedef
void
(
*
CreateAddressCallback
)
(
GeoclueMasterClient
*
client
,
...
...
@@ -75,12 +85,26 @@ gboolean geoclue_master_client_get_address_provider (GeoclueMasterClient *clien
char
**
service
,
char
**
path
,
GError
**
error
);
typedef
void
(
*
GeoclueGetProviderCallback
)
(
GeoclueMasterClient
*
client
,
char
*
name
,
char
*
description
,
char
*
service
,
char
*
path
,
GError
*
error
,
gpointer
userdata
);
void
geoclue_master_client_get_address_provider_async
(
GeoclueMasterClient
*
client
,
GeoclueGetProviderCallback
callback
,
gpointer
userdata
);
gboolean
geoclue_master_client_get_position_provider
(
GeoclueMasterClient
*
client
,
char
**
name
,
char
**
description
,
char
**
service
,
char
**
path
,
GError
**
error
);
void
geoclue_master_client_get_position_provider_async
(
GeoclueMasterClient
*
client
,
GeoclueGetProviderCallback
callback
,
gpointer
userdata
);
G_END_DECLS
...
...
geoclue/geoclue-master.c
View file @
3a31d260
...
...
@@ -36,6 +36,14 @@ typedef struct _GeoclueMasterPrivate {
G_DEFINE_TYPE
(
GeoclueMaster
,
geoclue_master
,
G_TYPE_OBJECT
);
typedef
struct
_GeoclueMasterAsyncData
{
GeoclueMaster
*
master
;
GCallback
callback
;
gpointer
userdata
;
}
GeoclueMasterAsyncData
;
static
void
finalize
(
GObject
*
object
)
{
...
...
@@ -147,3 +155,50 @@ geoclue_master_create_client (GeoclueMaster *master,
return
client
;
}
static
void
create_client_callback
(
DBusGProxy
*
proxy
,
char
*
path
,
GError
*
error
,
GeoclueMasterAsyncData
*
data
)
{
GeoclueMasterClient
*
client
;
client
=
NULL
;
if
(
!
error
)
{
client
=
g_object_new
(
GEOCLUE_TYPE_MASTER_CLIENT
,
"object-path"
,
path
,
NULL
);
}
(
*
(
GeoclueCreateClientCallback
)
data
->
callback
)
(
data
->
master
,
client
,
path
,
error
,
data
->
userdata
);
g_free
(
data
);
}
void
geoclue_master_create_client_async
(
GeoclueMaster
*
master
,
GeoclueCreateClientCallback
callback
,
gpointer
userdata
)
{
GeoclueMasterPrivate
*
priv
;
GeoclueMasterAsyncData
*
data
;
g_return_if_fail
(
GEOCLUE_IS_MASTER
(
master
));
priv
=
GET_PRIVATE
(
master
);
data
=
g_new
(
GeoclueMasterAsyncData
,
1
);
data
->
master
=
master
;
data
->
callback
=
G_CALLBACK
(
callback
);
data
->
userdata
=
userdata
;
org_freedesktop_Geoclue_Master_create_async
(
priv
->
proxy
,
(
org_freedesktop_Geoclue_Master_create_reply
)
create_client_callback
,
data
);
}
geoclue/geoclue-master.h
View file @
3a31d260
...
...
@@ -33,9 +33,18 @@ typedef struct _GeoclueMasterClass {
GType
geoclue_master_get_type
(
void
);
GeoclueMaster
*
geoclue_master_get_default
(
void
);
GeoclueMasterClient
*
geoclue_master_create_client
(
GeoclueMaster
*
master
,
char
**
object_path
,
GError
**
error
);
typedef
void
(
*
GeoclueCreateClientCallback
)
(
GeoclueMaster
*
master
,
GeoclueMasterClient
*
client
,
char
*
object_path
,
GError
*
error
,
gpointer
userdata
);
void
geoclue_master_create_client_async
(
GeoclueMaster
*
master
,
GeoclueCreateClientCallback
callback
,
gpointer
userdata
);
G_END_DECLS
...
...
geoclue/geoclue-provider.c
View file @
3a31d260
...
...
@@ -27,9 +27,7 @@
*
* pos = geoclue_position_new ("org.freedesktop.Geoclue.Providers.Example",
* "/org/freedesktop/Geoclue/Providers/Example");
* if (pos == NULL) {
* / * error * /
* }
*
* if (geoclue_provider_get_provider_info (GEOCLUE_PROVIDER (pos),
* &name, NULL, &error)) {
* g_print ("name = %s", name);
...
...
@@ -45,6 +43,12 @@
#include <geoclue/geoclue-provider.h>
#include "gc-iface-geoclue-bindings.h"
typedef
struct
_GeoclueProviderAsyncData
{
GeoclueProvider
*
provider
;
GCallback
callback
;
gpointer
userdata
;
}
GeoclueProviderAsyncData
;
typedef
struct
_GeoclueProviderPrivate
{
DBusGProxy
*
geoclue_proxy
;
...
...
@@ -80,6 +84,24 @@ status_changed (DBusGProxy *proxy,
g_signal_emit
(
provider
,
signals
[
STATUS_CHANGED
],
0
,
status
);
}
static
void
add_reference_callback
(
DBusGProxy
*
proxy
,
GError
*
error
,
gpointer
userdata
)
{
if
(
error
)
{
g_printerr
(
"Could not reference provider: %s"
,
error
->
message
);
g_error_free
(
error
);
}
}
static
void
remove_reference_callback
(
DBusGProxy
*
proxy
,
GError
*
error
,
gpointer
userdata
)
{
if
(
error
)
{
g_printerr
(
"Could not unreference provider: %s"
,
error
->
message
);
g_error_free
(
error
);
}
}
static
void
finalize
(
GObject
*
object
)
{
...
...
@@ -97,12 +119,10 @@ dispose (GObject *object)
{
GeoclueProvider
*
provider
=
GEOCLUE_PROVIDER
(
object
);
GeoclueProviderPrivate
*
priv
=
GET_PRIVATE
(
object
);
GError
*
error
=
NULL
;
if
(
!
org_freedesktop_Geoclue_remove_reference
(
priv
->
geoclue_proxy
,
&
error
)){
g_printerr
(
"Could not unreference provider: %s"
,
error
->
message
);
g_error_free
(
error
);
}
org_freedesktop_Geoclue_remove_reference_async
(
priv
->
geoclue_proxy
,
remove_reference_callback
,
NULL
);
if
(
priv
->
geoclue_proxy
)
{
g_object_unref
(
priv
->
geoclue_proxy
);
priv
->
geoclue_proxy
=
NULL
;
...
...
@@ -152,10 +172,9 @@ constructor (GType type,
priv
->
geoclue_proxy
=
dbus_g_proxy_new_for_name
(
connection
,
priv
->
service
,
priv
->
path
,
GEOCLUE_INTERFACE_NAME
);
if
(
!
org_freedesktop_Geoclue_add_reference
(
priv
->
geoclue_proxy
,
&
error
)){
g_printerr
(
"Could not reference provider: %s"
,
error
->
message
);
g_error_free
(
error
);
}
org_freedesktop_Geoclue_add_reference_async
(
priv
->
geoclue_proxy
,
add_reference_callback
,
NULL
);
dbus_g_proxy_add_signal
(
priv
->
geoclue_proxy
,
"StatusChanged"
,
G_TYPE_INT
,
G_TYPE_INVALID
);
dbus_g_proxy_connect_signal
(
priv
->
geoclue_proxy
,
"StatusChanged"
,
...
...
@@ -303,6 +322,60 @@ geoclue_provider_get_status (GeoclueProvider *provider,
return
TRUE
;
}
static
void
get_status_async_callback
(
DBusGProxy
*
proxy
,
GeoclueStatus
status
,
GError
*
error
,
GeoclueProviderAsyncData
*
data
)
{
(
*
(
GeoclueProviderStatusCallback
)
data
->
callback
)
(
data
->
provider
,
status
,
error
,
data
->
userdata
);
g_free
(
data
);
}
/**
* GeoclueProviderStatusCallback:
* @provider: A #GeoclueProvider object
* @status: A #GeoclueStatus
* @error: Error as #GError or %NULL
* @userdata: User data pointer set in geoclue_provider_get_status_async()
*
* Callback function for geoclue_provider_get_status_async().
*/
/**
* geoclue_provider_get_status_async:
* @provider: A #GeoclueProvider object
* @callback: A #GeoclueProviderStatusCallback function that will be called when return values are available
* @userdata: pointer for user specified data
*
* Asynchronous version of geoclue_provider_get_status(). Function returns
* (essentially) immediately and calls @callback when status is available or
* when there is an error.
*/
void
geoclue_provider_get_status_async
(
GeoclueProvider
*
provider
,
GeoclueProviderStatusCallback
callback
,
gpointer
userdata
)
{
GeoclueProviderPrivate
*
priv
=
GET_PRIVATE
(
provider
);
GeoclueProviderAsyncData
*
data
;
data
=
g_new
(
GeoclueProviderAsyncData
,
1
);
data
->
provider
=
provider
;
data
->
callback
=
G_CALLBACK
(
callback
);
data
->
userdata
=
userdata
;
org_freedesktop_Geoclue_get_status_async
(
priv
->
geoclue_proxy
,
(
org_freedesktop_Geoclue_get_status_reply
)
get_status_async_callback
,
data
);
}
/**
* geoclue_provider_set_options:
* @provider: A #GeoclueProvider object
...
...
@@ -328,6 +401,58 @@ geoclue_provider_set_options (GeoclueProvider *provider,
options
,
error
);
}
static
void
set_options_async_callback
(
DBusGProxy
*
proxy
,
GError
*
error
,
GeoclueProviderAsyncData
*
data
)
{
(
*
(
GeoclueProviderOptionsCallback
)
data
->
callback
)
(
data
->
provider
,
error
,
data
->
userdata
);
g_free
(
data
);
}
/**
* GeoclueProviderOptionsCallback:
* @provider: A #GeoclueProvider object
* @error: Error as #GError or %NULL
* @userdata: User data pointer set in geoclue_provider_set_options_async()
*
* Callback function for geoclue_provider_set_options_async().
*/
/**
* geoclue_provider_set_options_async:
* @provider: A #GeoclueProvider object
* @options: A #GHashTable of options
* @callback: A #GeoclueProviderOptionsCallback function that will be called when options are set
* @userdata: pointer for user specified data
*
* Asynchronous version of geoclue_provider_set_options(). Function returns
* (essentially) immediately and calls @callback when options have been set or
* when there is an error.
*/
void
geoclue_provider_set_options_async
(
GeoclueProvider
*
provider
,
GHashTable
*
options
,
GeoclueProviderOptionsCallback
callback
,
gpointer
userdata
)
{
GeoclueProviderPrivate
*
priv
=
GET_PRIVATE
(
provider
);
GeoclueProviderAsyncData
*
data
;
data
=
g_new
(
GeoclueProviderAsyncData
,
1
);
data
->
provider
=
provider
;
data
->
callback
=
G_CALLBACK
(
callback
);
data
->
userdata
=
userdata
;
org_freedesktop_Geoclue_set_options_async
(
priv
->
geoclue_proxy
,
options
,
(
org_freedesktop_Geoclue_set_options_reply
)
set_options_async_callback
,
data
);
}
/**
* geoclue_provider_get_provider_info:
* @provider: A #GeoclueProvider object
...
...
@@ -351,3 +476,58 @@ geoclue_provider_get_provider_info (GeoclueProvider *provider,
name
,
description
,
error
);
}
static
void
get_provider_info_async_callback
(
DBusGProxy
*
proxy
,
char
*
name
,
char
*
description
,
GError
*
error
,
GeoclueProviderAsyncData
*
data
)
{
(
*
(
GeoclueProviderInfoCallback
)
data
->
callback
)
(
data
->
provider
,
name
,
description
,
error
,
data
->
userdata
);
g_free
(
data
);
}
/**
* GeoclueProviderInfoCallback:
* @provider: A #GeoclueProvider object
* @name: Name of the provider
* @description: one-line description of the provider
* @error: Error as #GError or %NULL
* @userdata: User data pointer set in geoclue_provider_get_provider_info_async()
*
* Callback function for geoclue_provider_get_provider_info_async().
*/
/**
* geoclue_provider_get_provider_info_async:
* @provider: A #GeoclueProvider object
* @callback: A #GeoclueProviderInfoCallback function that will be called when info is available
* @userdata: pointer for user specified data
*
* Asynchronous version of geoclue_provider_get_provider_info(). Function returns
* (essentially) immediately and calls @callback when info is available or
* when there is an error.
*/
void
geoclue_provider_get_provider_info_async
(
GeoclueProvider
*
provider
,
GeoclueProviderInfoCallback
callback
,
gpointer
userdata
)
{
GeoclueProviderPrivate
*
priv
=
GET_PRIVATE
(
provider
);
GeoclueProviderAsyncData
*
data
;
data
=
g_new
(
GeoclueProviderAsyncData
,
1
);
data
->
provider
=
provider
;
data
->
callback
=
G_CALLBACK
(
callback
);
data
->
userdata
=
userdata
;
org_freedesktop_Geoclue_get_provider_info_async
(
priv
->
geoclue_proxy
,
(
org_freedesktop_Geoclue_get_provider_info_reply
)
get_provider_info_async_callback
,
data
);
}
geoclue/geoclue-provider.h
View file @
3a31d260
...
...
@@ -40,13 +40,37 @@ GType geoclue_provider_get_type (void);
gboolean
geoclue_provider_get_status
(
GeoclueProvider
*
provider
,
GeoclueStatus
*
status
,
GError
**
error
);
typedef
void
(
*
GeoclueProviderStatusCallback
)
(
GeoclueProvider
*
provider
,
GeoclueStatus
status
,
GError
*
error
,
gpointer
userdata
);
void
geoclue_provider_get_status_async
(
GeoclueProvider
*
provider
,
GeoclueProviderStatusCallback
callback
,
gpointer
userdata
);
gboolean
geoclue_provider_get_provider_info
(
GeoclueProvider
*
provider
,
char
**
name
,
char
**
description
,
GError
**
error
);
typedef
void
(
*
GeoclueProviderInfoCallback
)
(
GeoclueProvider
*
provider
,
char
*
name
,
char
*
description
,
GError
*
error
,
gpointer
userdata
);
void
geoclue_provider_get_provider_info_async
(
GeoclueProvider
*
provider
,
GeoclueProviderInfoCallback
callback
,
gpointer
userdata
);
gboolean
geoclue_provider_set_options
(
GeoclueProvider
*
provider
,
GHashTable
*
options
,
GError
**
error
);
typedef
void
(
*
GeoclueProviderOptionsCallback
)
(
GeoclueProvider
*
provider
,
GError
*
error
,
gpointer
userdata
);
void
geoclue_provider_set_options_async
(
GeoclueProvider
*
provider
,
GHashTable
*
options
,