@@ -79,7 +79,8 @@ class MIDIService(Service):
79
79
80
80
def __init__ (self , ** kwargs ):
81
81
super ().__init__ (** kwargs )
82
- self ._in_buffer = bytearray (self ._raw .packet_size )
82
+ # Defer creating _in_buffer until we're definitely connected.
83
+ self ._in_buffer = None
83
84
self ._out_buffer = None
84
85
shared_buffer = memoryview (bytearray (4 ))
85
86
self ._buffers = [
@@ -102,6 +103,8 @@ def readinto(self, buf, length):
102
103
"""Reads up to ``length`` bytes into ``buf`` starting at index 0.
103
104
104
105
Returns the number of bytes written into ``buf``."""
106
+ if self ._in_buffer is None :
107
+ self ._in_buffer = bytearray (self ._raw .packet_size )
105
108
i = 0
106
109
while i < length :
107
110
if self ._in_index < self ._in_length :
@@ -119,8 +122,6 @@ def readinto(self, buf, length):
119
122
buf [i ] = byte
120
123
i += 1
121
124
else :
122
- if len (self ._in_buffer ) < self ._raw .packet_size :
123
- self ._in_buffer = bytearray (self ._raw .packet_size )
124
125
self ._in_length = self ._raw .readinto (self ._in_buffer )
125
126
if self ._in_length == 0 :
126
127
break
@@ -168,7 +169,7 @@ def write(self, buf, length):
168
169
if self ._message_target_length :
169
170
self ._pending_realtime = b
170
171
else :
171
- self ._raw .write (b , self ._header )
172
+ self ._raw .write (b , header = self ._header )
172
173
else :
173
174
if (
174
175
0x80 <= data <= 0xBF or 0xE0 <= data <= 0xEF or data == 0xF2
0 commit comments