mirror of
https://code.videolan.org/videolan/vlc
synced 2024-08-31 06:46:39 +02:00
LUA: hide EINTR from scripts and remove the timeout feature
Timeout makes it too easy to write crappy code. It's also much easier to handle EINTR without timeout. This fixes a minor bug: revents was undefined if poll() failed.
This commit is contained in:
parent
028174606c
commit
314c242ab0
@ -201,7 +201,6 @@ static int vlclua_net_recv( lua_State *L )
|
||||
static int vlclua_net_poll( lua_State *L )
|
||||
{
|
||||
luaL_checktype( L, 1, LUA_TTABLE );
|
||||
double f_timeout = luaL_optnumber( L, 2, -1. );
|
||||
|
||||
int i_fds = 0;
|
||||
lua_pushnil( L );
|
||||
@ -223,7 +222,11 @@ static int vlclua_net_poll( lua_State *L )
|
||||
i++;
|
||||
}
|
||||
|
||||
int i_ret = poll( p_fds, i_fds, f_timeout < 0. ? -1 : (int)(f_timeout*1000) );
|
||||
int i_ret;
|
||||
do
|
||||
i_ret = poll( p_fds, i_fds, -1 );
|
||||
while( i_ret == -1 );
|
||||
|
||||
for( i = 0; i < i_fds; i++ )
|
||||
{
|
||||
lua_pushinteger( L, p_fds[i].fd );
|
||||
|
@ -199,7 +199,7 @@ net.connect_tcp( host, port ): open a connection to the given host:port (TCP).
|
||||
net.close( fd ): Close file descriptor.
|
||||
net.send( fd, string, [length] ): Send data on fd.
|
||||
net.recv( fd, [max length] ): Receive data from fd.
|
||||
net.poll( { fd = events }, [timeout in seconds] ): Implement poll function.
|
||||
net.poll( { fd = events } ): Implement poll function.
|
||||
Returns the numbers of file descriptors with a non 0 revent. The function
|
||||
modifies the input table to { fd = revents }. See "man poll".
|
||||
net.POLLIN/POLLPRI/POLLOUT/POLLRDHUP/POLLERR/POLLHUP/POLLNVAL: poll event flags
|
||||
|
@ -244,7 +244,7 @@ function host()
|
||||
end
|
||||
end
|
||||
|
||||
local ret = vlc.net.poll( pollfds, timeout or -1 )
|
||||
local ret = vlc.net.poll( pollfds )
|
||||
local wclients = {}
|
||||
local rclients = {}
|
||||
if ret > 0 then
|
||||
|
Loading…
Reference in New Issue
Block a user