mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-10 21:55:11 +01:00
Correct ring buffer copy and marshal iteration
This commit is contained in:
parent
17177212b9
commit
898d330979
@ -439,16 +439,16 @@ void Network::FlushSound(void)
|
|||||||
snd->n_items = this->sound_head - this->sound_tail;
|
snd->n_items = this->sound_head - this->sound_tail;
|
||||||
|
|
||||||
if (this->sound_head < this->sound_tail) {
|
if (this->sound_head < this->sound_tail) {
|
||||||
snd->n_items = NETWORK_SOUND_BUF_SIZE;
|
snd->n_items = NETWORK_SOUND_BUF_SIZE - this->sound_tail + this->sound_head;
|
||||||
memcpy(snd_info, &this->sound_active[this->sound_tail],
|
memcpy(snd_info, &this->sound_active[this->sound_tail],
|
||||||
(NETWORK_SOUND_BUF_SIZE - this->sound_tail) * sizeof(struct NetworkUpdateSoundInfo));
|
(NETWORK_SOUND_BUF_SIZE - this->sound_tail) * sizeof(struct NetworkUpdateSoundInfo));
|
||||||
memcpy(snd_info + NETWORK_SOUND_BUF_SIZE - this->sound_tail,
|
memcpy(snd_info + NETWORK_SOUND_BUF_SIZE - this->sound_tail,
|
||||||
&this->sound_active[this->sound_head],
|
&this->sound_active[0],
|
||||||
this->sound_head * sizeof(struct NetworkUpdateSoundInfo));
|
this->sound_head * sizeof(struct NetworkUpdateSoundInfo));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memcpy(snd_info, &this->sound_active[this->sound_head],
|
memcpy(snd_info, &this->sound_active[this->sound_tail],
|
||||||
(this->sound_head - this->sound_tail) * sizeof(struct NetworkUpdateSoundInfo));
|
(this->sound_head - this->sound_tail) * sizeof(struct NetworkUpdateSoundInfo));
|
||||||
}
|
}
|
||||||
this->sound_tail = this->sound_head;
|
this->sound_tail = this->sound_head;
|
||||||
@ -703,10 +703,12 @@ bool Network::MarshalData(NetworkUpdate *p)
|
|||||||
{
|
{
|
||||||
NetworkUpdateSound *snd = (NetworkUpdateSound *)p->data;
|
NetworkUpdateSound *snd = (NetworkUpdateSound *)p->data;
|
||||||
NetworkUpdateSoundInfo *info = (NetworkUpdateSoundInfo *)snd->info;
|
NetworkUpdateSoundInfo *info = (NetworkUpdateSoundInfo *)snd->info;
|
||||||
|
int items = snd->n_items;
|
||||||
|
|
||||||
snd->flags = htons(snd->flags);
|
snd->flags = htons(snd->flags);
|
||||||
snd->n_items = htons(snd->n_items);
|
snd->n_items = htons(snd->n_items);
|
||||||
for (unsigned int i = 0; i < snd->n_items; i++)
|
|
||||||
|
for (unsigned int i = 0; i < items; i++)
|
||||||
{
|
{
|
||||||
NetworkUpdateSoundInfo *cur = &info[i];
|
NetworkUpdateSoundInfo *cur = &info[i];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user