comparison event_log.c @ 1967:bd70f1e15684

Make netplay remote sync to network rather than audio or video so it doesn't drift out of sync with the host
author Michael Pavone <pavone@retrodev.com>
date Fri, 08 May 2020 00:22:54 -0700
parents 9c01945b5d20
children 80920c21bb52
comparison
equal deleted inserted replaced
1966:b3c2dcae7dfc 1967:bd70f1e15684
549 reader->input_stream.avail_out = reader->storage - init_msg_len; 549 reader->input_stream.avail_out = reader->storage - init_msg_len;
550 res = inflate(&reader->input_stream, Z_NO_FLUSH); 550 res = inflate(&reader->input_stream, Z_NO_FLUSH);
551 if (Z_OK != res && Z_BUF_ERROR != res) { 551 if (Z_OK != res && Z_BUF_ERROR != res) {
552 fatal_error("inflate returned %d in init_event_reader_tcp\n", res); 552 fatal_error("inflate returned %d in init_event_reader_tcp\n", res);
553 } 553 }
554 socket_blocking(reader->socket, 0);
555 int flag = 1; 554 int flag = 1;
556 setsockopt(reader->socket, IPPROTO_TCP, TCP_NODELAY, (const char *)&flag, sizeof(flag)); 555 setsockopt(reader->socket, IPPROTO_TCP, TCP_NODELAY, (const char *)&flag, sizeof(flag));
557 } 556 }
558 557
559 static void read_from_socket(event_reader *reader) 558 static void read_from_socket(event_reader *reader)
606 } 605 }
607 606
608 void reader_ensure_data(event_reader *reader, size_t bytes) 607 void reader_ensure_data(event_reader *reader, size_t bytes)
609 { 608 {
610 if (reader->buffer.size - reader->buffer.cur_pos < bytes) { 609 if (reader->buffer.size - reader->buffer.cur_pos < bytes) {
611 if (reader->socket) {
612 read_from_socket(reader);
613 }
614 if (reader->input_stream.avail_in) { 610 if (reader->input_stream.avail_in) {
615 inflate_flush(reader); 611 inflate_flush(reader);
616 } 612 }
617 if (reader->socket && reader->buffer.size - reader->buffer.cur_pos < bytes) { 613 if (reader->socket) {
618 socket_blocking(reader->socket, 1);
619 while (reader->buffer.size - reader->buffer.cur_pos < bytes) { 614 while (reader->buffer.size - reader->buffer.cur_pos < bytes) {
620 read_from_socket(reader); 615 read_from_socket(reader);
621 inflate_flush(reader); 616 inflate_flush(reader);
622 } 617 }
623 socket_blocking(reader->socket, 0);
624 } 618 }
625 } 619 }
626 } 620 }
627 621
628 uint8_t reader_next_event(event_reader *reader, uint32_t *cycle_out) 622 uint8_t reader_next_event(event_reader *reader, uint32_t *cycle_out)