CurrentUser doesn't use acquire and releqse anymore. Mutexes added to the members.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@13351 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
unitraxx
2013-07-25 14:01:20 +00:00
parent 261957bf72
commit ea11bfa725
19 changed files with 182 additions and 178 deletions

View File

@@ -27,54 +27,41 @@
#include "utils/log.hpp"
#include "online/servers_manager.hpp"
using namespace Online;
namespace Online{
static Synchronised<CurrentUser*> user_singleton(NULL);
static CurrentUser* current_user_singleton(NULL);
CurrentUser* CurrentUser::acquire()
CurrentUser* CurrentUser::get()
{
user_singleton.lock();
CurrentUser * user = user_singleton.getData();
if (user == NULL)
{
user_singleton.unlock();
user = new CurrentUser();
user_singleton.setAtomic(user);
user_singleton.lock();
}
return user;
}
void CurrentUser::release()
{
user_singleton.unlock();
if (current_user_singleton == NULL)
current_user_singleton = new CurrentUser();
return current_user_singleton;
}
void CurrentUser::deallocate()
{
user_singleton.lock();
CurrentUser* user = user_singleton.getData();
delete user;
user = NULL;
user_singleton.unlock();
delete current_user_singleton;
current_user_singleton = NULL;
} // deallocate
// ============================================================================
CurrentUser::CurrentUser(){
m_state = US_SIGNED_OUT;
m_id = 0;
m_name = "";
m_token = "";
m_save_session = false;
CurrentUser::CurrentUser()
: User("",0)
{
setState(US_SIGNED_OUT);
setToken("");
setSaveSession(false);
}
// ============================================================================
XMLRequest * CurrentUser::requestSignUp( const irr::core::stringw &username,
const irr::core::stringw &password,
const irr::core::stringw &password_confirm,
const irr::core::stringw &email,
bool terms)
const XMLRequest * CurrentUser::requestSignUp( const irr::core::stringw &username,
const irr::core::stringw &password,
const irr::core::stringw &password_confirm,
const irr::core::stringw &email,
bool terms)
{
assert(m_state == US_SIGNED_OUT || m_state == US_GUEST);
assert(getState() == US_SIGNED_OUT || getState() == US_GUEST);
XMLRequest * request = new XMLRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
request->setParameter("action", std::string("register"));
@@ -88,10 +75,10 @@ namespace Online{
}
// ============================================================================
CurrentUser::SignInRequest * CurrentUser::requestSavedSession()
const CurrentUser::SignInRequest * CurrentUser::requestSavedSession()
{
SignInRequest * request = NULL;
if(m_state != US_SIGNED_IN && UserConfigParams::m_saved_session)
if(getState() != US_SIGNED_IN && UserConfigParams::m_saved_session)
{
request = new SignInRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
@@ -99,24 +86,24 @@ namespace Online{
request->setParameter("userid", UserConfigParams::m_saved_user);
request->setParameter("token", UserConfigParams::m_saved_token.c_str());
HTTPManager::get()->addRequest(request);
m_state = US_SIGNING_IN;
setState(US_SIGNING_IN);
}
return request;
}
CurrentUser::SignInRequest * CurrentUser::requestSignIn( const irr::core::stringw &username,
const irr::core::stringw &password,
bool save_session)
const CurrentUser::SignInRequest * CurrentUser::requestSignIn( const irr::core::stringw &username,
const irr::core::stringw &password,
bool save_session)
{
assert(m_state == US_SIGNED_OUT);
m_save_session = save_session;
assert(getState() == US_SIGNED_OUT);
setSaveSession(save_session);
SignInRequest * request = new SignInRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
request->setParameter("action",std::string("connect"));
request->setParameter("username",username);
request->setParameter("password",password);
HTTPManager::get()->addRequest(request);
m_state = US_SIGNING_IN;
setState(US_SIGNING_IN);
return request;
}
@@ -124,39 +111,44 @@ namespace Online{
{
if (input->isSuccess())
{
int token_fetched = input->getResult()->get("token", &m_token);
int username_fetched = input->getResult()->get("username", &m_name);
int userid_fetched = input->getResult()->get("userid", &m_id);
std::string token("");
int token_fetched = input->getResult()->get("token", &token);
setToken(token);
irr::core::stringw username("");
int username_fetched = input->getResult()->get("username", &username);
setUserName(username);
uint32_t userid(0);
int userid_fetched = input->getResult()->get("userid", &userid);
setUserID(userid);
assert(token_fetched && username_fetched && userid_fetched);
m_state = US_SIGNED_IN;
if(m_save_session)
setState(US_SIGNED_IN);
if(getSaveSession())
{
UserConfigParams::m_saved_user = m_id;
UserConfigParams::m_saved_token = m_token;
UserConfigParams::m_saved_user = getUserID();
UserConfigParams::m_saved_token = getToken();
UserConfigParams::m_saved_session = true;
m_save_session = false;
}
}
else
m_state = US_SIGNED_OUT;
setState(US_SIGNED_OUT);
}
void CurrentUser::SignInRequest::callback()
{
CurrentUser::acquire()->signIn(this);
CurrentUser::release();
CurrentUser::get()->signIn(this);
}
// ============================================================================
CurrentUser::ServerCreationRequest * CurrentUser::requestServerCreation(const irr::core::stringw &name, int max_players)
const CurrentUser::ServerCreationRequest * CurrentUser::requestServerCreation( const irr::core::stringw &name,
int max_players)
{
assert(m_state == US_SIGNED_IN);
assert(getState() == US_SIGNED_IN);
ServerCreationRequest * request = new ServerCreationRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
request->setParameter("action", std::string("create_server"));
request->setParameter("token", m_token);
request->setParameter("userid", m_id);
request->setParameter("token", getToken());
request->setParameter("userid", getUserID());
request->setParameter("name", name);
request->setParameter("max_players", max_players);
HTTPManager::get()->addRequest(request);
@@ -174,15 +166,15 @@ namespace Online{
}
// ============================================================================
CurrentUser::SignOutRequest * CurrentUser::requestSignOut(){
assert(m_state == US_SIGNED_IN || m_state == US_GUEST);
const CurrentUser::SignOutRequest * CurrentUser::requestSignOut(){
assert(getState() == US_SIGNED_IN || getState() == US_GUEST);
SignOutRequest * request = new SignOutRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "client-user.php");
request->setParameter("action",std::string("disconnect"));
request->setParameter("token",m_token);
request->setParameter("userid",m_id);
request->setParameter("token", getToken());
request->setParameter("userid", getUserID());
HTTPManager::get()->addRequest(request);
m_state = US_SIGNING_OUT;
setState(US_SIGNING_OUT);
return request;
}
@@ -192,10 +184,10 @@ namespace Online{
{
Log::warn("CurrentUser::signOut", "%s", _("There were some connection issues while signing out. Report a bug if this caused issues."));
}
m_token = "";
m_name = "";
m_id = 0;
m_state = US_SIGNED_OUT;
setToken("");
setUserName("");
setUserID(0);
setState(US_SIGNED_OUT);
UserConfigParams::m_saved_user = 0;
UserConfigParams::m_saved_token = "";
UserConfigParams::m_saved_session = false;
@@ -203,19 +195,18 @@ namespace Online{
void CurrentUser::SignOutRequest::callback()
{
CurrentUser::acquire()->signOut(this);
CurrentUser::release();
CurrentUser::get()->signOut(this);
}
// ============================================================================
CurrentUser::ServerJoinRequest * CurrentUser::requestServerJoin(uint32_t server_id){
assert(m_state == US_SIGNED_IN || m_state == US_GUEST);
const CurrentUser::ServerJoinRequest * CurrentUser::requestServerJoin(uint32_t server_id){
assert(getState() == US_SIGNED_IN || getState() == US_GUEST);
ServerJoinRequest * request = new ServerJoinRequest();
request->setURL((std::string)UserConfigParams::m_server_multiplayer + "address-management.php");
request->setParameter("action",std::string("request-connection"));
request->setParameter("token", m_token);
request->setParameter("id", m_id);
request->setParameter("token", getToken());
request->setParameter("id", getUserID());
request->setParameter("server_id", server_id);
HTTPManager::get()->addRequest(request);
return request;
@@ -234,12 +225,11 @@ namespace Online{
// ============================================================================
irr::core::stringw CurrentUser::getUserName() const
const irr::core::stringw CurrentUser::getUserName() const
{
if((m_state == US_SIGNED_IN ) || (m_state == US_GUEST))
return m_name;
if((getState() == US_SIGNED_IN ) || (getState() == US_GUEST))
return getUserName();
else
return _("Currently not signed in");
}
} // namespace Online

View File

@@ -25,6 +25,7 @@
#include "utils/types.hpp"
#include "online/server.hpp"
#include "http_manager.hpp"
#include "utils/synchronised.hpp"
namespace Online{
@@ -75,7 +76,7 @@ namespace Online{
Synchronised<uint32_t> m_created_server_id;
public:
ServerCreationRequest() : XMLRequest(RT_SERVER_CREATION) {}
uint32_t getCreatedServerID() {return m_created_server_id.getAtomic();}
const uint32_t getCreatedServerID() const {return m_created_server_id.getAtomic();}
};
class ServerJoinRequest : public XMLRequest {
@@ -86,9 +87,17 @@ namespace Online{
private:
std::string m_token;
bool m_save_session;
UserState m_state;
Synchronised<std::string> m_token;
Synchronised<bool> m_save_session;
Synchronised<UserState> m_state;
UserState getState() const { return m_state.getAtomic(); }
bool getSaveSession() const { return m_save_session.getAtomic(); }
const std::string getToken() const { return m_token.getAtomic(); }
void setState (UserState user_state) { m_state.setAtomic(user_state); }
void setSaveSession (bool save_session) { m_save_session.setAtomic(save_session); }
void setToken (const std::string & token) { m_token.setAtomic(token); }
CurrentUser();
@@ -98,32 +107,28 @@ namespace Online{
public:
//Singleton
static CurrentUser* acquire();
static void release();
static void deallocate();
static CurrentUser * get();
static void deallocate();
SignInRequest * requestSavedSession();
SignInRequest * requestSignIn( const irr::core::stringw &username,
const irr::core::stringw &password,
bool save_session);
SignOutRequest * requestSignOut();
ServerCreationRequest * requestServerCreation( const irr::core::stringw &name, int max_players);
ServerJoinRequest * requestServerJoin( uint32_t server_id);
const SignInRequest * requestSavedSession();
const SignInRequest * requestSignIn( const irr::core::stringw &username,
const irr::core::stringw &password,
bool save_session);
const SignOutRequest * requestSignOut();
const ServerCreationRequest * requestServerCreation( const irr::core::stringw &name, int max_players);
const ServerJoinRequest * requestServerJoin( uint32_t server_id);
// Register
XMLRequest * requestSignUp( const irr::core::stringw &username,
const irr::core::stringw &password,
const irr::core::stringw &password_ver,
const irr::core::stringw &email,
bool terms);
const XMLRequest * requestSignUp( const irr::core::stringw &username,
const irr::core::stringw &password,
const irr::core::stringw &password_ver,
const irr::core::stringw &email,
bool terms);
/** Returns the username if signed in. */
irr::core::stringw getUserName() const;
bool isSignedIn() const { return m_state == US_SIGNED_IN; }
bool isGuest() const { return m_state == US_GUEST; }
bool isSigningIn() const { return m_state == US_SIGNING_IN; }
UserState getUserState() { return m_state; }
const irr::core::stringw getUserName() const;
const UserState getUserState() const { return m_state.getAtomic(); }
}; // class CurrentUser

View File

@@ -59,13 +59,15 @@ namespace Online{
//Negative numbers are reserved for special requests ment for the HTTP Manager
assert(type >= 0);
m_url.setAtomic("");
m_parameters = new Parameters;
MutexLocker(m_parameters);
m_parameters.getData() = new Parameters;
m_progress.setAtomic(0);
}
HTTPRequest::~HTTPRequest()
{
delete m_parameters;
MutexLocker(m_parameters);
delete m_parameters.getData();
}
bool HTTPRequest::isAllowedToAdd()
@@ -96,9 +98,10 @@ namespace Online{
curl_easy_setopt(curl_session, CURLOPT_URL, m_url.getAtomic().c_str());
Parameters::iterator iter;
std::string postString = "";
for (iter = m_parameters->begin(); iter != m_parameters->end(); ++iter)
m_parameters.lock();
for (iter = m_parameters.getData()->begin(); iter != m_parameters.getData()->end(); ++iter)
{
if(iter != m_parameters->begin())
if(iter != m_parameters.getData()->begin())
postString.append("&");
char * escaped = curl_easy_escape(curl_session , iter->first.c_str(), iter->first.size());
postString.append(escaped);
@@ -108,6 +111,7 @@ namespace Online{
postString.append(escaped);
curl_free(escaped);
}
m_parameters.unlock();
curl_easy_setopt(curl_session, CURLOPT_POSTFIELDS, postString.c_str());
std::string readBuffer;
curl_easy_setopt(curl_session, CURLOPT_WRITEFUNCTION, &HTTPRequest::WriteCallback);
@@ -199,18 +203,21 @@ namespace Online{
{
m_info.setAtomic("");
m_success.setAtomic(false);
m_result = NULL;
MutexLocker(m_result);
m_result.getData() = NULL;
}
XMLRequest::~XMLRequest()
{
delete m_result;
MutexLocker(m_result);
delete m_result.getData();
}
void XMLRequest::operation()
{
m_result = file_manager->createXMLTreeFromString(downloadPage());
MutexLocker(m_result);
m_result.getData() = file_manager->createXMLTreeFromString(downloadPage());
}
void XMLRequest::afterOperation()
@@ -227,8 +234,22 @@ namespace Online{
}
else
info = _("Unable to connect to the server. Check your internet connection or try again later.");
m_info.setAtomic(info);
m_info.lock();
m_info.getData() = info;
m_info.unlock();
m_success.setAtomic(success);
HTTPRequest::afterOperation();
}
const XMLNode * XMLRequest::getResult() const
{
MutexLocker(m_result);
return m_result.getData();
}
const irr::core::stringw & XMLRequest::getInfo() const
{
MutexLocker(m_info);
return m_info.getData();
}
} // namespace Online

View File

@@ -121,7 +121,7 @@ namespace Online{
* (everything ok) at the end. */
Synchronised<float> m_progress;
Synchronised<std::string> m_url;
Parameters * m_parameters;
Synchronised<Parameters *> m_parameters;
virtual void afterOperation() OVERRIDE;
/** Executed when a request has finished. */
@@ -149,14 +149,17 @@ namespace Online{
virtual ~HTTPRequest();
void setParameter(const std::string & name, const std::string &value){
(*m_parameters)[name] = value;
MutexLocker(m_parameters);
(*m_parameters.getData())[name] = value;
};
void setParameter(const std::string & name, const irr::core::stringw &value){
(*m_parameters)[name] = irr::core::stringc(value.c_str()).c_str();
MutexLocker(m_parameters);
(*m_parameters.getData())[name] = irr::core::stringc(value.c_str()).c_str();
}
template <typename T>
void setParameter(const std::string & name, const T& value){
(*m_parameters)[name] = StringUtils::toString(value);
MutexLocker(m_parameters);
(*m_parameters.getData())[name] = StringUtils::toString(value);
}
/** Returns the current progress. */
@@ -179,9 +182,9 @@ namespace Online{
class XMLRequest : public HTTPRequest
{
private:
Synchronised<XMLNode *> m_result;
protected :
XMLNode * m_result;
Synchronised<irr::core::stringw> m_info;
Synchronised<bool> m_success;
@@ -192,13 +195,8 @@ namespace Online{
XMLRequest(int type = 0, bool manage_memory = false, int priority = 1);
virtual ~XMLRequest();
virtual XMLNode * getResult() const { return m_result; }
const irr::core::stringw getInfo() const {
m_info.lock();
const irr::core::stringw info = m_info.getData();
m_info.unlock();
return info;
}
const XMLNode * getResult() const;
const irr::core::stringw & getInfo() const;
bool isSuccess() const { return m_success.getAtomic(); }
};

View File

@@ -47,16 +47,14 @@ namespace Online{
// ============================================================================
ServersManager::ServersManager(){
m_info_message.setAtomic("");
m_last_load_time.setAtomic(0.0f);
m_joined_server.setAtomic(NULL);
}
ServersManager::~ServersManager(){
cleanUpServers();
m_joined_server.lock();
MutexLocker(m_joined_server);
delete m_joined_server.getData();
m_joined_server.unlock();
}
// ============================================================================
@@ -96,7 +94,6 @@ namespace Online{
}
m_last_load_time.setAtomic(Time::getRealTime());
}
m_info_message.setAtomic(input->getInfo());
//FIXME error message
}
@@ -116,20 +113,18 @@ namespace Online{
// ============================================================================
void ServersManager::setJoinedServer(uint32_t id)
{
m_joined_server.lock();
MutexLocker(m_joined_server);
delete m_joined_server.getData();
//It's a copy!
m_joined_server.getData() = new Server(*getServerByID(id));
m_joined_server.unlock();
}
// ============================================================================
void ServersManager::unsetJoinedServer()
{
m_joined_server.lock();
MutexLocker(m_joined_server);
delete m_joined_server.getData();
m_joined_server.getData() = NULL;
m_joined_server.unlock();
}
// ============================================================================
@@ -146,21 +141,21 @@ namespace Online{
// ============================================================================
int ServersManager::getNumServers () const
{
MutexLocker locker(m_sorted_servers);
MutexLocker(m_sorted_servers);
return m_sorted_servers.getData().size();
}
// ============================================================================
const Server * ServersManager::getServerBySort (int index) const
{
MutexLocker locker(m_sorted_servers);
MutexLocker(m_sorted_servers);
return m_sorted_servers.getData().get(index);
}
// ============================================================================
const Server * ServersManager::getServerByID (uint32_t id) const
{
MutexLocker locker(m_mapped_servers);
MutexLocker(m_mapped_servers);
return m_mapped_servers.getData().at(id);
}
@@ -172,9 +167,8 @@ namespace Online{
// ============================================================================
void ServersManager::sort(bool sort_desc){
m_sorted_servers.lock();
MutexLocker(m_sorted_servers);
m_sorted_servers.getData().insertionSort(0, sort_desc);
m_sorted_servers.unlock();
}
} // namespace Online

View File

@@ -59,7 +59,6 @@ namespace Online {
/** This is a pointer to a copy of the server, the moment it got joined */
Synchronised<Server *> m_joined_server;
Synchronised<irr::core::stringw> m_info_message;
Synchronised<float> m_last_load_time;
void refresh(RefreshRequest * input);
void cleanUpServers();

View File

@@ -22,10 +22,15 @@
#include <sstream>
#include <stdlib.h>
using namespace Online;
namespace Online{
// ============================================================================
User::User(const irr::core::stringw &username)
User::User ( const irr::core::stringw & username,
const uint32_t & userid
)
{
m_name = username;
setUserName(username);
setUserID(userid);
}
} // namespace Online

View File

@@ -32,19 +32,22 @@ namespace Online{
class User
{
private:
Synchronised<irr::core::stringw> m_name;
Synchronised<uint32_t> m_id;
protected:
irr::core::stringw m_name;
uint32_t m_id;
User(){}
void setUserName (const irr::core::stringw & name) { m_name.setAtomic(name); }
void setUserID (const uint32_t & id) { m_id.setAtomic(id); }
public:
User(const irr::core::stringw &username);
User( const irr::core::stringw & username,
const uint32_t & userid
);
irr::core::stringw getUserName() const { return m_name; }
uint32_t getUserID() const { return m_id; }
const irr::core::stringw getUserName() const { return m_name.getAtomic(); }
const uint32_t getUserID() const { return m_id.getAtomic(); }
}; // class User

View File

@@ -56,8 +56,7 @@ void CreateServerScreen::loadedFromFile()
m_name_widget = getWidget<TextBoxWidget>("name");
assert(m_name_widget != NULL);
m_name_widget->setText(CurrentUser::acquire()->getUserName() + _("'s server"));
CurrentUser::release();
m_name_widget->setText(CurrentUser::get()->getUserName() + _("'s server"));
m_max_players_widget = getWidget<SpinnerWidget>("max_players");
assert(m_max_players_widget != NULL);
m_max_players_widget->setValue(8);
@@ -137,8 +136,7 @@ void CreateServerScreen::serverCreationRequest()
else
{
//m_options_widget->setDeactivated();
m_server_creation_request = Online::CurrentUser::acquire()->requestServerCreation(name, max_players);
Online::CurrentUser::release();
m_server_creation_request = Online::CurrentUser::get()->requestServerCreation(name, max_players);
return;
}
sfx_manager->quickSound("anvil");

View File

@@ -46,7 +46,7 @@ private:
GUIEngine::IconButtonWidget * m_create_widget;
GUIEngine::IconButtonWidget * m_cancel_widget;
Online::CurrentUser::ServerCreationRequest * m_server_creation_request;
const Online::CurrentUser::ServerCreationRequest * m_server_creation_request;
/** \brief Sets which widget has to be focused. Depends on the user state. */
void setInitialFocus();

View File

@@ -115,8 +115,7 @@ void LoginDialog::login()
else
{
m_options_widget->setDeactivated();
m_sign_in_request = Online::CurrentUser::acquire()->requestSignIn(username,password, m_remember_widget->getState());
Online::CurrentUser::release();
m_sign_in_request = Online::CurrentUser::get()->requestSignIn(username,password, m_remember_widget->getState());
}
}

View File

@@ -37,7 +37,7 @@ private:
bool m_self_destroy;
bool m_open_registration_dialog;
Online::CurrentUser::SignInRequest * m_sign_in_request;
const Online::CurrentUser::SignInRequest * m_sign_in_request;
GUIEngine::LabelWidget * m_message_widget;
GUIEngine::TextBoxWidget * m_username_widget;
GUIEngine::TextBoxWidget * m_password_widget;

View File

@@ -214,8 +214,7 @@ bool RegistrationDialog::processTermsEvent(const std::string& eventSource){
m_options_widget->setDeactivated();
m_info_widget->setDefaultColor();
m_info_widget->setText(Messages::signingUp(), false);
m_sign_up_request = CurrentUser::acquire()->requestSignUp(m_username, m_password, m_password_confirm, m_email, true);
CurrentUser::release();
m_sign_up_request = CurrentUser::get()->requestSignUp(m_username, m_password, m_password_confirm, m_email, true);
return true;
}
else if (eventSource == m_accept_terms_widget->m_properties[PROP_ID])

View File

@@ -56,8 +56,8 @@ private:
bool m_show_registration_terms;
bool m_show_registration_activation;
Online::XMLRequest * m_sign_up_request;
Online::XMLRequest * m_activation_request;
const Online::XMLRequest * m_sign_up_request;
const Online::XMLRequest * m_activation_request;
//Saved user input :
irr::core::stringw m_username;

View File

@@ -40,10 +40,9 @@ using namespace Online;
// -----------------------------------------------------------------------------
ServerInfoDialog::ServerInfoDialog(uint32_t server_id, bool from_server_creation) :
ModalDialog(0.8f,0.8f)
ServerInfoDialog::ServerInfoDialog(const uint32_t server_id, bool from_server_creation)
: ModalDialog(0.8f,0.8f), m_server_id(server_id)
{
m_server_id = server_id;
m_self_destroy = false;
m_enter_lobby = false;
m_from_server_creation = from_server_creation;
@@ -77,8 +76,7 @@ ServerInfoDialog::~ServerInfoDialog()
// -----------------------------------------------------------------------------
void ServerInfoDialog::requestJoin()
{
m_server_join_request = Online::CurrentUser::acquire()->requestServerJoin(m_server_id);
Online::CurrentUser::release();
m_server_join_request = Online::CurrentUser::get()->requestServerJoin(m_server_id);
}
// -----------------------------------------------------------------------------

View File

@@ -42,11 +42,11 @@ private:
bool m_self_destroy;
bool m_enter_lobby;
bool m_from_server_creation;
Online::CurrentUser::ServerJoinRequest * m_server_join_request;
const Online::CurrentUser::ServerJoinRequest * m_server_join_request;
float m_load_timer;
uint32_t m_server_id;
const uint32_t m_server_id;
GUIEngine::LabelWidget * m_name_widget;
GUIEngine::LabelWidget * m_info_widget;
@@ -58,7 +58,7 @@ private:
void requestJoin();
public:
ServerInfoDialog(uint32_t server_id, bool just_created = false);
ServerInfoDialog(const uint32_t server_id, bool just_created = false);
~ServerInfoDialog();
void onEnterPressedInternal();

View File

@@ -52,10 +52,9 @@ DEFINE_SCREEN_SINGLETON( OnlineScreen );
OnlineScreen::OnlineScreen() : Screen("online/main.stkgui")
{
m_recorded_state = CurrentUser::US_SIGNED_OUT;
CurrentUser::SignInRequest * request = CurrentUser::acquire()->requestSavedSession();
const CurrentUser::SignInRequest * request = CurrentUser::get()->requestSavedSession();
if(request != NULL)
m_requests.push_back(request);
CurrentUser::release();
} // OnlineScreen
// ----------------------------------------------------------------------------
@@ -97,8 +96,7 @@ void OnlineScreen::loadedFromFile()
bool OnlineScreen::hasStateChanged()
{
CurrentUser::UserState previous_state = m_recorded_state;
m_recorded_state = CurrentUser::acquire()->getUserState();
CurrentUser::release();
m_recorded_state = CurrentUser::get()->getUserState();
if (previous_state != m_recorded_state)
return true;
return false;
@@ -145,8 +143,7 @@ void OnlineScreen::init()
Screen::init();
setInitialFocus();
DemoWorld::resetIdleTime();
m_online_status_widget->setText(Messages::signedInAs(CurrentUser::acquire()->getUserName()), false);
CurrentUser::release();
m_online_status_widget->setText(Messages::signedInAs(CurrentUser::get()->getUserName()), false);
} // init
@@ -207,8 +204,7 @@ void OnlineScreen::eventCallback(Widget* widget, const std::string& name, const
}
else if (selection == "sign_out")
{
CurrentUser::acquire()->requestSignOut();
CurrentUser::release();
CurrentUser::get()->requestSignOut();
}
else if (selection == "register")
{

View File

@@ -54,7 +54,7 @@ private:
Online::CurrentUser::UserState m_recorded_state;
PtrVector<Online::XMLRequest> m_requests;
PtrVector<const Online::XMLRequest> m_requests;
/** \brief Checks if the recorded state differs from the actual state and sets it. */
bool hasStateChanged();

View File

@@ -21,8 +21,6 @@
#include <pthread.h>
class ISynchronised
{
public :
@@ -122,17 +120,18 @@ private:
void operator=(const Synchronised<TYPE>& v) {}
};
#define MutexLocker(x) MutexLockerHelper __dummy(x);
class MutexLocker
class MutexLockerHelper
{
const ISynchronised * m_synchronised;
public:
MutexLocker(const ISynchronised & synchronised){
MutexLockerHelper(const ISynchronised & synchronised){
m_synchronised = &synchronised;
m_synchronised->lock();
}
~MutexLocker(){
~MutexLockerHelper(){
m_synchronised->unlock();
}
};