X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fopenal%2Fsound.c;h=c1411f0f1d47f64b50ea71358a59d838fff866f3;hb=36489a9da257f8f846d7c04266d5d8ebe3ecb32b;hp=f4f07b9b6e91112d15b1b154dad7e8b4bcfa4df3;hpb=14813cefff1cc036bf217346188c168429b52e81;p=flatwaifu.git diff --git a/src/openal/sound.c b/src/openal/sound.c index f4f07b9..c1411f0 100644 --- a/src/openal/sound.c +++ b/src/openal/sound.c @@ -1,11 +1,27 @@ +/* Copyright (C) 2020 SovietPony + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3 of the License ONLY. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "sound.h" #include "music.h" #include "files.h" // F_findres F_getreslen #include "memory.h" // M_lock M_unlock -#include "misc.h" // int2host #include "error.h" // logo +#include "common/endianness.h" + #ifdef __APPLE__ # include # include @@ -24,10 +40,10 @@ #pragma pack(1) typedef struct dmi { - dword len; - dword rate; - dword lstart; - dword llen; + word len; + word rate; + word lstart; + word llen; byte data[]; } dmi; #pragma pack() @@ -95,7 +111,7 @@ void MUS_update (void) { /* Sound */ -static int sound_menu_handler (menu_msg_t *msg, const menu_t *m, void *data, int i) { +static int sound_menu_handler (menu_msg_t *msg, const menu_t *m, int i) { static int cur; enum { VOLUME, __NUM__ }; static const simple_menu_t sm = { @@ -115,7 +131,7 @@ static int sound_menu_handler (menu_msg_t *msg, const menu_t *m, void *data, int } const menu_t *S_menu (void) { - static const menu_t m = { sound_menu_handler }; + static const menu_t m = { &sound_menu_handler }; return &m; } @@ -195,18 +211,18 @@ snd_t *S_get (int id) { handle = M_lock(id); if (handle != NULL) { void *data = handle; - dword len = F_getreslen(id); - dword rate = 11025; - dword lstart = 0; - dword llen = 0; + word len = F_getreslen(id); + word rate = 11025; + word lstart = 0; + word llen = 0; int sign = 0; - if (len > 16) { + if (len > 8) { dmi *hdr = handle; - dword hdr_len = int2host(hdr->len); - dword hdr_rate = int2host(hdr->rate); - dword hdr_lstart = int2host(hdr->lstart); - dword hdr_llen = int2host(hdr->llen); - if (hdr_len <= len - 8 && hdr_lstart + hdr_llen <= len - 16) { + word hdr_len = short2host(hdr->len); + word hdr_rate = short2host(hdr->rate); + word hdr_lstart = short2host(hdr->lstart); + word hdr_llen = short2host(hdr->llen); + if (hdr_len <= len - 4 && hdr_lstart + hdr_llen <= len - 8) { data = hdr->data; len = hdr_len; rate = hdr_rate;