This commit is contained in:
twinaphex 2017-01-17 19:43:19 +01:00
parent 0c814f767c
commit b4cdad1a6f
3 changed files with 20 additions and 14 deletions

View File

@ -315,7 +315,8 @@ void input_poll(void)
#ifdef HAVE_NETWORKGAMEPAD
if (input_driver_remote)
input_remote_poll(input_driver_remote);
input_remote_poll(input_driver_remote,
settings->input.max_users);
#endif
}
@ -1184,7 +1185,12 @@ void input_driver_deinit_remote(void)
{
#ifdef HAVE_NETWORKGAMEPAD
if (input_driver_remote)
input_remote_free(input_driver_remote);
{
settings_t *settings = config_get_ptr();
input_remote_free(input_driver_remote,
settings->input.max_users);
}
input_driver_remote = NULL;
#endif
}
@ -1198,7 +1204,8 @@ bool input_driver_init_remote(void)
return false;
input_driver_remote = input_remote_new(
settings->network_remote_base_port);
settings->network_remote_base_port,
settings->input.max_users);
if (input_driver_remote)
return true;

View File

@ -120,7 +120,7 @@ error:
}
#endif
input_remote_t *input_remote_new(uint16_t port)
input_remote_t *input_remote_new(uint16_t port, unsigned max_users)
{
unsigned user;
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD)
@ -135,7 +135,7 @@ input_remote_t *input_remote_new(uint16_t port)
(void)port;
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD)
for(user = 0; user < settings->input.max_users; user ++)
for(user = 0; user < max_users; user ++)
{
handle->net_fd[user] = -1;
if(settings->network_remote_enable_user[user])
@ -148,18 +148,17 @@ input_remote_t *input_remote_new(uint16_t port)
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD)
error:
input_remote_free(handle);
input_remote_free(handle, max_users);
return NULL;
#endif
}
void input_remote_free(input_remote_t *handle)
void input_remote_free(input_remote_t *handle, unsigned max_users)
{
unsigned user;
#if defined(HAVE_NETWORKING) && defined(HAVE_NETWORKGAMEPAD)
settings_t *settings = config_get_ptr();
for(user = 0; user < settings->input.max_users; user ++)
for(user = 0; user < max_users; user ++)
socket_close(handle->net_fd[user]);
#endif
@ -229,13 +228,13 @@ bool input_remote_key_pressed(int key, unsigned port)
return (ol_state->buttons[port] & (UINT64_C(1) << key));
}
void input_remote_poll(input_remote_t *handle)
void input_remote_poll(input_remote_t *handle, unsigned max_users)
{
unsigned user;
settings_t *settings = config_get_ptr();
input_remote_state_t *ol_state = input_remote_get_state_ptr();
for(user = 0; user < settings->input.max_users; user++)
for(user = 0; user < max_users; user++)
{
if (settings->network_remote_enable_user[user])
{

View File

@ -30,11 +30,11 @@ RETRO_BEGIN_DECLS
typedef struct input_remote input_remote_t;
input_remote_t *input_remote_new(uint16_t port);
input_remote_t *input_remote_new(uint16_t port, unsigned max_users);
void input_remote_free(input_remote_t *handle);
void input_remote_free(input_remote_t *handle, unsigned max_users);
void input_remote_poll(input_remote_t *handle);
void input_remote_poll(input_remote_t *handle, unsigned max_users);
bool input_remote_key_pressed(int key, unsigned port);