History

Reset sample counter when pressing Play Song (reduces tiny delay)

Also some code cleanup (more sensible variable names).

Olav Sørensen committed 6 years ago

Commit e8a29be1 parent b8597d34 files · +113 −112Browse files

Unified · Split

4 files
  1. src/ft2_audio.c +24 −26
  2. src/ft2_audio.h +2 −1
  3. src/ft2_replayer.c +2 −0
  4. vs2019_project/ft2-clone/ft2-clone.vcxproj.filters +85 −85
src/ft2_audio.c+24−26
@@ -20,7 +20,7 @@ · 19 unmodified lines
2020
2121 static int8_t pmpCountDiv, pmpChannels = 2;
2222 static uint16_t smpBuffSize;
23−static int32_t masterVol, oldAudioFreq, pmpLeft, randSeed = INITIAL_DITHER_SEED;
23+static int32_t masterVol, oldAudioFreq, randSeed = INITIAL_DITHER_SEED;
2424 static int32_t prngStateL, prngStateR;
2525 static uint32_t tickTimeLen, tickTimeLenFrac;
2626 static float fAudioAmpMul;
@@ -161,7 +161,7 @@ void setSpeed(uint16_t bpm) · 134 unmodified lines
161161 if (bpm > MAX_BPM)
162162 return;
163163
164− audio.speedVal = audio.speedValTab[bpm];
164+ audio.samplesPerTick = audio.speedValTab[bpm];
165165
166166 // get tick time length for audio/video sync timestamp
167167 const uint64_t tickTimeLen64 = audio.tickTimeLengthTab[bpm];
@@ -261,7 +261,7 @@ static void voiceUpdateVolumes(int32_t i, uint8_t status) · 93 unmodified lines
261261 }
262262 else
263263 {
264− v->SVolIPLen = audio.speedVal;
264+ v->SVolIPLen = audio.samplesPerTick;
265265 v->SLVolIP = ((int64_t)destVolL * audio.rampSpeedValMul) >> 32;
266266 v->SRVolIP = ((int64_t)destVolR * audio.rampSpeedValMul) >> 32;
267267 }
@@ -584,8 +584,8 @@ uint32_t mixReplayerTickToBuffer(uint8_t *stream, uint8_t bitDepth) · 316 unmodified lines
584584 voice_t *v, *r;
585585
586586 assert(audio.speedVal <= MAX_WAV_RENDER_SAMPLES_PER_TICK);
587− memset(audio.mixBufferL, 0, audio.speedVal * sizeof (int32_t));
588− memset(audio.mixBufferR, 0, audio.speedVal * sizeof (int32_t));
587+ memset(audio.mixBufferL, 0, audio.samplesPerTick * sizeof (int32_t));
588+ memset(audio.mixBufferR, 0, audio.samplesPerTick * sizeof (int32_t));
589589
590590 // mix channels
591591 v = voice; // normal voices
@@ -594,24 +594,24 @@ uint32_t mixReplayerTickToBuffer(uint8_t *stream, uint8_t bitDepth) · 2 unmodified lines
594594 for (int32_t i = 0; i < song.antChn; i++, v++, r++)
595595 {
596596 // call the mixing routine currently set for the voice
597− if (v->mixRoutine != NULL) v->mixRoutine(v, audio.speedVal); // mix normal voice
598− if (r->mixRoutine != NULL) r->mixRoutine(r, audio.speedVal); // mix volume ramp voice
597+ if (v->mixRoutine != NULL) v->mixRoutine(v, audio.samplesPerTick); // mix normal voice
598+ if (r->mixRoutine != NULL) r->mixRoutine(r, audio.samplesPerTick); // mix volume ramp voice
599599 }
600600
601601 // normalize mix buffer and send to audio stream
602602 if (bitDepth == 16)
603603 {
604604 if (config.specialFlags2 & DITHERED_AUDIO)
605− sendSamples16BitDitherStereo(stream, audio.speedVal, 2);
605+ sendSamples16BitDitherStereo(stream, audio.samplesPerTick, 2);
606606 else
607− sendSamples16BitStereo(stream, audio.speedVal, 2);
607+ sendSamples16BitStereo(stream, audio.samplesPerTick, 2);
608608 }
609609 else
610610 {
611− sendSamples24BitStereo(stream, audio.speedVal, 2);
611+ sendSamples24BitStereo(stream, audio.samplesPerTick, 2);
612612 }
613613
614− return audio.speedVal;
614+ return audio.samplesPerTick;
615615 }
616616
617617 int32_t pattQueueReadSize(void)
@@ -930,18 +930,16 @@ static void fillVisualsSyncBuffer(void) · 312 unmodified lines
930930
931931 static void SDLCALL audioCallback(void *userdata, Uint8 *stream, int len)
932932 {
933− int32_t a, b;
934−
935933 assert(len < 65536); // limitation in mixer
936934 assert(pmpCountDiv > 0);
937935
938− a = len / pmpCountDiv;
939− if (a <= 0)
936+ int32_t samplesLeft = len / pmpCountDiv;
937+ if (samplesLeft <= 0)
940938 return;
941939
942− while (a > 0)
940+ while (samplesLeft > 0)
943941 {
944− if (pmpLeft == 0)
942+ if (audio.tickSampleCounter == 0)
945943 {
946944 // new replayer tick
947945
@@ -954,20 +952,20 @@ static void SDLCALL audioCallback(void *userdata, Uint8 *stream, int len) · 6 unmodified lines
954952 mix_UpdateChannelVolPanFrq();
955953 fillVisualsSyncBuffer();
956954
957− pmpLeft = audio.speedVal;
955+ audio.tickSampleCounter = audio.samplesPerTick;
958956
959957 replayerBusy = false;
960958 }
961959
962− b = a;
963− if (b > pmpLeft)
964− b = pmpLeft;
960+ int32_t samplesToMix = samplesLeft;
961+ if (samplesToMix > audio.tickSampleCounter)
962+ samplesToMix = audio.tickSampleCounter;
965963
966− mixAudio(stream, b, pmpChannels);
967− stream += b * pmpCountDiv;
964+ mixAudio(stream, samplesToMix, pmpChannels);
965+ stream += samplesToMix * pmpCountDiv;
968966
969− a -= b;
970− pmpLeft -= b;
967+ samplesLeft -= samplesToMix;
968+ audio.tickSampleCounter -= samplesToMix;
971969 }
972970
973971 (void)userdata;
@@ -1225,7 +1223,7 @@ bool setupAudio(bool showErrorMsg) · 251 unmodified lines
12251223
12261224 stopAllScopes();
12271225
1228− pmpLeft = 0; // reset sample counter
1226+ audio.tickSampleCounter = 0; // zero tick sample counter so that it will instantly initiate a tick
12291227
12301228 calcReplayRate(audio.freq);
12311229
src/ft2_audio.h+2−1
@@ -51,8 +51,9 @@ typedef struct audio_t · 50 unmodified lines
5151 int32_t inputDeviceNum, outputDeviceNum, lastWorkingAudioFreq, lastWorkingAudioBits;
5252 int32_t quickVolSizeVal, *mixBufferL, *mixBufferR, *mixBufferLUnaligned, *mixBufferRUnaligned;
5353 int32_t rampQuickVolMul, rampSpeedValMul, speedValTab[MAX_BPM+1], rampSpeedValMulTab[MAX_BPM+1];
54+ int32_t tickSampleCounter;
5455 uint32_t freq;
55− uint32_t audLatencyPerfValInt, audLatencyPerfValFrac, speedVal, musicTimeSpeedVal;
56+ uint32_t audLatencyPerfValInt, audLatencyPerfValFrac, samplesPerTick, musicTimeSpeedVal;
5657 uint64_t tickTime64, tickTime64Frac, tickTimeLengthTab[MAX_BPM+1];
5758 double dAudioLatencyMs;
5859 SDL_AudioDeviceID dev;
src/ft2_replayer.c+2−0
@@ -2780,6 +2780,8 @@ void startPlaying(int8_t mode, int16_t row) · 2779 unmodified lines
27802780 if (song.tempo == 0)
27812781 song.tempo = song.initialTempo;
27822782
2783+ audio.tickSampleCounter = 0; // zero tick sample counter so that it will instantly initiate a tick
2784+
27832785 unlockMixerCallback();
27842786
27852787 ui.updatePosSections = true;
vs2019_project/ft2-clone/ft2-clone.vcxproj.filters+85−85
@@ -1,57 +1,62 @@
11 <?xml version="1.0" encoding="utf-8"?>
22 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33 <ItemGroup>
4+ <ClCompile Include="..\..\src\ft2_about.c" />
45 <ClCompile Include="..\..\src\ft2_audio.c" />
6+ <ClCompile Include="..\..\src\ft2_audioselector.c" />
7+ <ClCompile Include="..\..\src\ft2_bmp.c" />
8+ <ClCompile Include="..\..\src\ft2_checkboxes.c" />
59 <ClCompile Include="..\..\src\ft2_config.c" />
10+ <ClCompile Include="..\..\src\ft2_diskop.c" />
611 <ClCompile Include="..\..\src\ft2_edit.c" />
12+ <ClCompile Include="..\..\src\ft2_events.c" />
713 <ClCompile Include="..\..\src\ft2_gui.c" />
814 <ClCompile Include="..\..\src\ft2_help.c" />
915 <ClCompile Include="..\..\src\ft2_inst_ed.c" />
16+ <ClCompile Include="..\..\src\ft2_intrp_table.c" />
1017 <ClCompile Include="..\..\src\ft2_keyboard.c" />
1118 <ClCompile Include="..\..\src\ft2_main.c" />
19+ <ClCompile Include="..\..\src\ft2_midi.c" />
20+ <ClCompile Include="..\..\src\ft2_mix.c" />
21+ <ClCompile Include="..\..\src\ft2_module_loader.c" />
22+ <ClCompile Include="..\..\src\ft2_module_saver.c" />
1223 <ClCompile Include="..\..\src\ft2_mouse.c" />
1324 <ClCompile Include="..\..\src\ft2_nibbles.c" />
25+ <ClCompile Include="..\..\src\ft2_palette.c" />
26+ <ClCompile Include="..\..\src\ft2_pattern_draw.c" />
27+ <ClCompile Include="..\..\src\ft2_pattern_ed.c" />
28+ <ClCompile Include="..\..\src\ft2_pushbuttons.c" />
29+ <ClCompile Include="..\..\src\ft2_radiobuttons.c" />
1430 <ClCompile Include="..\..\src\ft2_replayer.c" />
15− <ClCompile Include="..\..\src\ft2_scopes.c" />
16− <ClCompile Include="..\..\src\ft2_video.c" />
1731 <ClCompile Include="..\..\src\ft2_sample_ed.c" />
18− <ClCompile Include="..\..\src\ft2_pattern_ed.c" />
32+ <ClCompile Include="..\..\src\ft2_sample_ed_features.c" />
1933 <ClCompile Include="..\..\src\ft2_sample_loader.c" />
2034 <ClCompile Include="..\..\src\ft2_sample_saver.c" />
21− <ClCompile Include="..\..\src\ft2_diskop.c" />
22− <ClCompile Include="..\..\src\ft2_unicode.c" />
23− <ClCompile Include="..\..\src\ft2_midi.c" />
24− <ClCompile Include="..\..\src\ft2_wav_renderer.c" />
25− <ClCompile Include="..\..\src\ft2_trim.c" />
26− <ClCompile Include="..\..\src\ft2_checkboxes.c" />
27− <ClCompile Include="..\..\src\ft2_pushbuttons.c" />
28− <ClCompile Include="..\..\src\ft2_radiobuttons.c" />
35+ <ClCompile Include="..\..\src\ft2_sampling.c" />
36+ <ClCompile Include="..\..\src\ft2_scopedraw.c" />
37+ <ClCompile Include="..\..\src\ft2_scopes.c" />
2938 <ClCompile Include="..\..\src\ft2_scrollbars.c" />
30− <ClCompile Include="..\..\src\ft2_textboxes.c" />
39+ <ClCompile Include="..\..\src\ft2_structs.c" />
3140 <ClCompile Include="..\..\src\ft2_sysreqs.c" />
32− <ClCompile Include="..\..\src\ft2_module_loader.c" />
33− <ClCompile Include="..\..\src\ft2_module_saver.c" />
34− <ClCompile Include="..\..\src\ft2_mix.c" />
35− <ClCompile Include="..\..\src\ft2_sampling.c" />
36− <ClCompile Include="..\..\src\ft2_audioselector.c" />
37− <ClCompile Include="..\..\src\ft2_events.c" />
38− <ClCompile Include="..\..\src\ft2_pattern_draw.c" />
39− <ClCompile Include="..\..\src\ft2_sample_ed_features.c" />
41+ <ClCompile Include="..\..\src\ft2_tables.c" />
42+ <ClCompile Include="..\..\src\ft2_textboxes.c" />
43+ <ClCompile Include="..\..\src\ft2_trim.c" />
44+ <ClCompile Include="..\..\src\ft2_unicode.c" />
45+ <ClCompile Include="..\..\src\ft2_video.c" />
46+ <ClCompile Include="..\..\src\ft2_wav_renderer.c" />
4047 <ClCompile Include="..\..\src\rtmidi\RtMidi.cpp">
4148 <Filter>rtmidi</Filter>
4249 </ClCompile>
4350 <ClCompile Include="..\..\src\rtmidi\rtmidi_c.cpp">
4451 <Filter>rtmidi</Filter>
4552 </ClCompile>
46− <ClCompile Include="..\..\src\ft2_palette.c" />
47− <ClCompile Include="..\..\src\ft2_scopedraw.c" />
48− <ClCompile Include="..\..\src\ft2_tables.c" />
49− <ClCompile Include="..\..\src\ft2_intrp_table.c" />
50− <ClCompile Include="..\..\src\ft2_bmp.c" />
51− <ClCompile Include="..\..\src\gfxdata\ft2_bmp_nibbles.c">
53+ <ClCompile Include="..\..\src\gfxdata\ft2_bmp_fonts.c">
5254 <Filter>graphics</Filter>
5355 </ClCompile>
54− <ClCompile Include="..\..\src\gfxdata\ft2_bmp_midi.c">
56+ <ClCompile Include="..\..\src\gfxdata\ft2_bmp_gui.c">
57+ <Filter>graphics</Filter>
58+ </ClCompile>
59+ <ClCompile Include="..\..\src\gfxdata\ft2_bmp_instr.c">
5560 <Filter>graphics</Filter>
5661 </ClCompile>
5762 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_logo.c">
@@ -60,164 +65,159 @@ · 2 unmodified lines
6065 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_looppins.c">
6166 <Filter>graphics</Filter>
6267 </ClCompile>
63− <ClCompile Include="..\..\src\gfxdata\ft2_bmp_mouse.c">
68+ <ClCompile Include="..\..\src\gfxdata\ft2_bmp_midi.c">
6469 <Filter>graphics</Filter>
6570 </ClCompile>
66− <ClCompile Include="..\..\src\gfxdata\ft2_bmp_fonts.c">
71+ <ClCompile Include="..\..\src\gfxdata\ft2_bmp_mouse.c">
6772 <Filter>graphics</Filter>
6873 </ClCompile>
69− <ClCompile Include="..\..\src\gfxdata\ft2_bmp_instr.c">
74+ <ClCompile Include="..\..\src\gfxdata\ft2_bmp_nibbles.c">
7075 <Filter>graphics</Filter>
7176 </ClCompile>
7277 <ClCompile Include="..\..\src\gfxdata\ft2_bmp_scopes.c">
7378 <Filter>graphics</Filter>
7479 </ClCompile>
75− <ClCompile Include="..\..\src\gfxdata\ft2_bmp_gui.c">
76− <Filter>graphics</Filter>
77− </ClCompile>
78− <ClCompile Include="..\..\src\ft2_structs.c" />
79− <ClCompile Include="..\..\src\ft2_about.c" />
8080 </ItemGroup>
8181 <ItemGroup>
82− <ClInclude Include="..\..\src\ft2_audio.h">
82+ <ClInclude Include="..\..\src\rtmidi\RtMidi.h">
83+ <Filter>rtmidi</Filter>
84+ </ClInclude>
85+ <ClInclude Include="..\..\src\rtmidi\rtmidi_c.h">
86+ <Filter>rtmidi</Filter>
87+ </ClInclude>
88+ <ClInclude Include="..\..\src\ft2_about.h">
8389 <Filter>headers</Filter>
8490 </ClInclude>
85− <ClInclude Include="..\..\src\ft2_config.h">
91+ <ClInclude Include="..\..\src\ft2_audio.h">
8692 <Filter>headers</Filter>
8793 </ClInclude>
88− <ClInclude Include="..\..\src\ft2_edit.h">
94+ <ClInclude Include="..\..\src\ft2_audioselector.h">
8995 <Filter>headers</Filter>
9096 </ClInclude>
91− <ClInclude Include="..\..\src\ft2_gui.h">
97+ <ClInclude Include="..\..\src\ft2_bmp.h">
9298 <Filter>headers</Filter>
9399 </ClInclude>
94− <ClInclude Include="..\..\src\ft2_header.h">
100+ <ClInclude Include="..\..\src\ft2_checkboxes.h">
95101 <Filter>headers</Filter>
96102 </ClInclude>
97− <ClInclude Include="..\..\src\ft2_help.h">
103+ <ClInclude Include="..\..\src\ft2_config.h">
98104 <Filter>headers</Filter>
99105 </ClInclude>
100− <ClInclude Include="..\..\src\ft2_inst_ed.h">
106+ <ClInclude Include="..\..\src\ft2_diskop.h">
101107 <Filter>headers</Filter>
102108 </ClInclude>
103− <ClInclude Include="..\..\src\ft2_keyboard.h">
109+ <ClInclude Include="..\..\src\ft2_edit.h">
104110 <Filter>headers</Filter>
105111 </ClInclude>
106− <ClInclude Include="..\..\src\ft2_mouse.h">
112+ <ClInclude Include="..\..\src\ft2_events.h">
107113 <Filter>headers</Filter>
108114 </ClInclude>
109− <ClInclude Include="..\..\src\ft2_nibbles.h">
115+ <ClInclude Include="..\..\src\ft2_gfxdata.h">
110116 <Filter>headers</Filter>
111117 </ClInclude>
112− <ClInclude Include="..\..\src\ft2_replayer.h">
118+ <ClInclude Include="..\..\src\ft2_gui.h">
113119 <Filter>headers</Filter>
114120 </ClInclude>
115− <ClInclude Include="..\..\src\ft2_scopes.h">
121+ <ClInclude Include="..\..\src\ft2_header.h">
116122 <Filter>headers</Filter>
117123 </ClInclude>
118− <ClInclude Include="..\..\src\ft2_sample_ed.h">
124+ <ClInclude Include="..\..\src\ft2_help.h">
119125 <Filter>headers</Filter>
120126 </ClInclude>
121− <ClInclude Include="..\..\src\ft2_pattern_ed.h">
127+ <ClInclude Include="..\..\src\ft2_inst_ed.h">
122128 <Filter>headers</Filter>
123129 </ClInclude>
124− <ClInclude Include="..\..\src\ft2_sample_loader.h">
130+ <ClInclude Include="..\..\src\ft2_intrp_table.h">
125131 <Filter>headers</Filter>
126132 </ClInclude>
127− <ClInclude Include="..\..\src\ft2_sample_saver.h">
133+ <ClInclude Include="..\..\src\ft2_keyboard.h">
128134 <Filter>headers</Filter>
129135 </ClInclude>
130− <ClInclude Include="..\..\src\ft2_video.h">
136+ <ClInclude Include="..\..\src\ft2_midi.h">
131137 <Filter>headers</Filter>
132138 </ClInclude>
133− <ClInclude Include="..\..\src\ft2_diskop.h">
139+ <ClInclude Include="..\..\src\ft2_mix.h">
134140 <Filter>headers</Filter>
135141 </ClInclude>
136− <ClInclude Include="..\..\src\ft2_unicode.h">
142+ <ClInclude Include="..\..\src\ft2_mix_macros.h">
137143 <Filter>headers</Filter>
138144 </ClInclude>
139− <ClInclude Include="..\..\src\ft2_midi.h">
145+ <ClInclude Include="..\..\src\ft2_module_loader.h">
140146 <Filter>headers</Filter>
141147 </ClInclude>
142− <ClInclude Include="..\..\src\ft2_wav_renderer.h">
148+ <ClInclude Include="..\..\src\ft2_module_saver.h">
143149 <Filter>headers</Filter>
144150 </ClInclude>
145− <ClInclude Include="..\..\src\ft2_about.h">
151+ <ClInclude Include="..\..\src\ft2_mouse.h">
146152 <Filter>headers</Filter>
147153 </ClInclude>
148− <ClInclude Include="..\..\src\ft2_trim.h">
154+ <ClInclude Include="..\..\src\ft2_nibbles.h">
149155 <Filter>headers</Filter>
150156 </ClInclude>
151− <ClInclude Include="..\..\src\ft2_checkboxes.h">
157+ <ClInclude Include="..\..\src\ft2_palette.h">
152158 <Filter>headers</Filter>
153159 </ClInclude>
154− <ClInclude Include="..\..\src\ft2_pushbuttons.h">
160+ <ClInclude Include="..\..\src\ft2_pattern_draw.h">
155161 <Filter>headers</Filter>
156162 </ClInclude>
157− <ClInclude Include="..\..\src\ft2_radiobuttons.h">
163+ <ClInclude Include="..\..\src\ft2_pattern_ed.h">
158164 <Filter>headers</Filter>
159165 </ClInclude>
160− <ClInclude Include="..\..\src\ft2_scrollbars.h">
166+ <ClInclude Include="..\..\src\ft2_pushbuttons.h">
161167 <Filter>headers</Filter>
162168 </ClInclude>
163− <ClInclude Include="..\..\src\ft2_textboxes.h">
169+ <ClInclude Include="..\..\src\ft2_radiobuttons.h">
164170 <Filter>headers</Filter>
165171 </ClInclude>
166− <ClInclude Include="..\..\src\ft2_sysreqs.h">
172+ <ClInclude Include="..\..\src\ft2_replayer.h">
167173 <Filter>headers</Filter>
168174 </ClInclude>
169− <ClInclude Include="..\..\src\ft2_module_loader.h">
175+ <ClInclude Include="..\..\src\ft2_sample_ed.h">
170176 <Filter>headers</Filter>
171177 </ClInclude>
172− <ClInclude Include="..\..\src\ft2_module_saver.h">
178+ <ClInclude Include="..\..\src\ft2_sample_ed_features.h">
173179 <Filter>headers</Filter>
174180 </ClInclude>
175− <ClInclude Include="..\..\src\ft2_gfxdata.h">
181+ <ClInclude Include="..\..\src\ft2_sample_loader.h">
176182 <Filter>headers</Filter>
177183 </ClInclude>
178− <ClInclude Include="..\..\src\ft2_mix.h">
184+ <ClInclude Include="..\..\src\ft2_sample_saver.h">
179185 <Filter>headers</Filter>
180186 </ClInclude>
181187 <ClInclude Include="..\..\src\ft2_sampling.h">
182188 <Filter>headers</Filter>
183189 </ClInclude>
184− <ClInclude Include="..\..\src\ft2_audioselector.h">
190+ <ClInclude Include="..\..\src\ft2_scopedraw.h">
185191 <Filter>headers</Filter>
186192 </ClInclude>
187− <ClInclude Include="..\..\src\ft2_mix_macros.h">
193+ <ClInclude Include="..\..\src\ft2_scopes.h">
188194 <Filter>headers</Filter>
189195 </ClInclude>
190− <ClInclude Include="..\..\src\ft2_events.h">
196+ <ClInclude Include="..\..\src\ft2_scrollbars.h">
191197 <Filter>headers</Filter>
192198 </ClInclude>
193− <ClInclude Include="..\..\src\ft2_pattern_draw.h">
199+ <ClInclude Include="..\..\src\ft2_structs.h">
194200 <Filter>headers</Filter>
195201 </ClInclude>
196− <ClInclude Include="..\..\src\ft2_palette.h">
202+ <ClInclude Include="..\..\src\ft2_sysreqs.h">
197203 <Filter>headers</Filter>
198204 </ClInclude>
199− <ClInclude Include="..\..\src\ft2_sample_ed_features.h">
205+ <ClInclude Include="..\..\src\ft2_tables.h">
200206 <Filter>headers</Filter>
201207 </ClInclude>
202− <ClInclude Include="..\..\src\rtmidi\RtMidi.h">
203− <Filter>rtmidi</Filter>
204− </ClInclude>
205− <ClInclude Include="..\..\src\rtmidi\rtmidi_c.h">
206− <Filter>rtmidi</Filter>
207− </ClInclude>
208− <ClInclude Include="..\..\src\ft2_scopedraw.h">
208+ <ClInclude Include="..\..\src\ft2_textboxes.h">
209209 <Filter>headers</Filter>
210210 </ClInclude>
211− <ClInclude Include="..\..\src\ft2_tables.h">
211+ <ClInclude Include="..\..\src\ft2_trim.h">
212212 <Filter>headers</Filter>
213213 </ClInclude>
214− <ClInclude Include="..\..\src\ft2_intrp_table.h">
214+ <ClInclude Include="..\..\src\ft2_unicode.h">
215215 <Filter>headers</Filter>
216216 </ClInclude>
217− <ClInclude Include="..\..\src\ft2_bmp.h">
217+ <ClInclude Include="..\..\src\ft2_video.h">
218218 <Filter>headers</Filter>
219219 </ClInclude>
220− <ClInclude Include="..\..\src\ft2_structs.h">
220+ <ClInclude Include="..\..\src\ft2_wav_renderer.h">
221221 <Filter>headers</Filter>
222222 </ClInclude>
223223 </ItemGroup>

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t