From: munkyu.im Date: Tue, 13 Aug 2013 08:08:56 +0000 (+0900) Subject: ecs: fix select procedure X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~828 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1c57101ce28172cb052dc922f8b806c2dbd50ad9;p=sdk%2Femulator%2Fqemu.git ecs: fix select procedure Signed-off-by: munkyu.im --- diff --git a/tizen/src/ecs.c b/tizen/src/ecs.c index 62d4379fab..5f8cc0630f 100644 --- a/tizen/src/ecs.c +++ b/tizen/src/ecs.c @@ -114,7 +114,7 @@ static void ecs_client_close(ECS_Client* clii) { if (0 <= clii->client_fd) { LOG("ecs client closed with fd: %d", clii->client_fd); closesocket(clii->client_fd); -#ifdef _WIN32 +#ifndef CONFIG_LINUX FD_CLR(clii->client_fd, &clii->cs->reads); #endif clii->client_fd = -1; @@ -1304,29 +1304,29 @@ static int ecs_loop(ECS_State *cs) return 0; } #elif defined(CONFIG_DARWIN) -#define FD_MAX_SIZE 1024 static int ecs_loop(ECS_State *cs) { int index = 0; + int res = 0; struct timeval timeout; fd_set temps = cs->reads; timeout.tv_sec = 5; timeout.tv_usec = 0; - if (select(0, &temps, 0, 0, &timeout) < 0) { - LOG("select error."); + if ((res = select(MAX_FD_NUM + 1, &temps, NULL, NULL, &timeout)) < 0) { + LOG("select failed.."); return -1; - } + } - for (index = 0; index < FD_MAX_SIZE; index++) { - if (FD_ISSET(cs->reads.fds_bits[index], &temps)) { - if (cs->reads.fds_bits[index] == cs->listen_fd) { + for (index = 0; index < MAX_FD_NUM; index ++) { + if (FD_ISSET(index, &temps)) { + if (index == cs->listen_fd) { ecs_accept(cs); continue; } - ecs_read(ecs_find_client(cs->reads.fds_bits[index])); + ecs_read(ecs_find_client(index)); } } diff --git a/tizen/src/ecs.h b/tizen/src/ecs.h index 6ee9fefdca..4a02289565 100644 --- a/tizen/src/ecs.h +++ b/tizen/src/ecs.h @@ -99,13 +99,14 @@ struct Monitor { }; #define MAX_EVENTS 1000 +#define MAX_FD_NUM 300 typedef struct ECS_State { int listen_fd; #ifdef CONFIG_LINUX int epoll_fd; struct epoll_event events[MAX_EVENTS]; #else - fd_set reads; + fd_set reads; #endif int is_unix; int ecs_running;