diff options
Diffstat (limited to 'src/ft_sfx_footstep.c')
-rw-r--r-- | src/ft_sfx_footstep.c | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/src/ft_sfx_footstep.c b/src/ft_sfx_footstep.c index d7a62d2..391bf79 100644 --- a/src/ft_sfx_footstep.c +++ b/src/ft_sfx_footstep.c @@ -11,36 +11,33 @@ /* ************************************************************************** */ #include <cub3d.h> -#include <stddef.h> #include <unistd.h> #include <stdint.h> #include <sys/types.h> #include <sys/wait.h> +#include <sys/types.h> +#include <sys/time.h> +#include <sys/resource.h> #include <libft.h> void ft_sfx_footstep(t_cub *cl) { static uint8_t ref = 0; - pid_t tmp; - int status; - tmp = waitpid(cl->sfx.footstep_pid, &status, WNOHANG); - /* ft_printf("top_pid %d\nfs_pid %d\ntmp %d\n\n", getpid(), cl->sfx.footstep_pid, tmp); */ - if (tmp > 0) + cl->sfx.footstep_pid = fork(); + if (cl->sfx.footstep_pid == 0) { - cl->sfx.footstep_pid = fork(); - if (cl->sfx.footstep_pid == 0) - { - ref += 1; - if (ref > 201) - ref = 0; - if (ref % 2) - execve(*(cl->sfx.footstep_one + 0), - cl->sfx.footstep_one, cl->envp); - else - execve(*(cl->sfx.footstep_two + 0), - cl->sfx.footstep_two, cl->envp); - } + ref += 1; + if (ref > 201) + ref = 0; + if (ref % 2) + execve(*(cl->sfx.footstep_one + 0), + cl->sfx.footstep_one, cl->envp); + else + execve(*(cl->sfx.footstep_two + 0), + cl->sfx.footstep_two, cl->envp); } + else + wait(&cl->sfx.footstep_pid); } |