summaryrefslogtreecommitdiff
path: root/sd/source/ui/remotecontrol/BluetoothServer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/remotecontrol/BluetoothServer.cxx')
-rw-r--r--sd/source/ui/remotecontrol/BluetoothServer.cxx36
1 files changed, 29 insertions, 7 deletions
diff --git a/sd/source/ui/remotecontrol/BluetoothServer.cxx b/sd/source/ui/remotecontrol/BluetoothServer.cxx
index 4d948663b9bd..d140c1e523d1 100644
--- a/sd/source/ui/remotecontrol/BluetoothServer.cxx
+++ b/sd/source/ui/remotecontrol/BluetoothServer.cxx
@@ -267,7 +267,8 @@ void incomingCallback( void *userRefCon,
BluetoothServer::BluetoothServer( std::vector<Communicator*>* pCommunicators )
- : mpCommunicators( pCommunicators )
+ : meWasDiscoverable( UNKNOWN ),
+ mpCommunicators( pCommunicators )
{
}
@@ -275,6 +276,27 @@ BluetoothServer::~BluetoothServer()
{
}
+
+void BluetoothServer::ensureDiscoverable()
+{
+ if( !spServer || spServer->meWasDiscoverable != UNKNOWN )
+ return;
+
+ bool bDiscoverable = spServer->isDiscoverable();
+ spServer->meWasDiscoverable = bDiscoverable ? DISCOVERABLE : NOT_DISCOVERABLE;
+ spServer->setDiscoverable( true );
+}
+
+void BluetoothServer::restoreDiscoverable()
+{
+ if(!spServer)
+ return;
+
+ if ( spServer->meWasDiscoverable == NOT_DISCOVERABLE )
+ spServer->setDiscoverable( false );
+ spServer->meWasDiscoverable = UNKNOWN;
+}
+
bool BluetoothServer::isDiscoverable()
{
#if (defined(LINUX) && !defined(__FreeBSD_kernel__)) && defined(ENABLE_DBUS)
@@ -328,7 +350,7 @@ bool BluetoothServer::isDiscoverable()
#endif
}
-void BluetoothServer::setDiscoverable( bool aDiscoverable )
+void BluetoothServer::setDiscoverable( bool bDiscoverable )
{
#if (defined(LINUX) && !defined(__FreeBSD_kernel__)) && defined(ENABLE_DBUS)
SAL_INFO( "sdremote.bluetooth", "BluetoothServer::isDiscoverable called" );
@@ -398,12 +420,12 @@ void BluetoothServer::setDiscoverable( bool aDiscoverable )
return;
}
- GValue aDiscoverableGValue = G_VALUE_INIT;
- g_value_init( &aDiscoverableGValue, G_TYPE_BOOLEAN );
- g_value_set_boolean( &aDiscoverableGValue, aDiscoverable );
+ GValue bDiscoverableGValue = G_VALUE_INIT;
+ g_value_init( &bDiscoverableGValue, G_TYPE_BOOLEAN );
+ g_value_set_boolean( &bDiscoverableGValue, bDiscoverable );
aResult = dbus_g_proxy_call( aAdapter, "SetProperty", &aError,
G_TYPE_STRING, "Discoverable",
- G_TYPE_VALUE, &aDiscoverableGValue, G_TYPE_INVALID, G_TYPE_INVALID);
+ G_TYPE_VALUE, &bDiscoverableGValue, G_TYPE_INVALID, G_TYPE_INVALID);
if ( !aResult || aError )
{
SAL_WARN( "sdremote.bluetooth", "SetProperty(Discoverable) failed" );
@@ -418,7 +440,7 @@ void BluetoothServer::setDiscoverable( bool aDiscoverable )
g_object_unref( G_OBJECT( aAdapter ));
dbus_g_connection_unref( aConnection );
#else // defined(LINUX) && defined(ENABLE_DBUS)
- (void) aDiscoverable; // avoid warnings
+ (void) bDiscoverable; // avoid warnings
#endif
}