-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChangeLog
More file actions
647 lines (595 loc) · 28.4 KB
/
Copy pathChangeLog
File metadata and controls
647 lines (595 loc) · 28.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
Fri Aug 17 02:12:20 EDT 2007 J Phelps <godless@users.sf.net>
* interface_binds/editor.h: Changed type of redraw_flags from
char to int.
* interface_binds/editor.cpp (get_visible_columns): Line 160:
fixed a divide-by-zero bug that is discovered by shrinking the
window to a very small size.
Thu Aug 16 21:28:15 EDT 2007 J Phelps <godless@users.sf.net>
* interface_binds/editor.h: New methods set_flag_repaint() and
flag_repaint().
* orderlist_edit.cpp(draw_single_mode): Draw_single_mode is now
a wrapper for repaint().
* sample_instrument_table.cpp(draw_single_mode): Is now a wrapper
around repaint().
* pattern_edit.cpp(repaint_after_command,update_info_areas):
Converted into paintEvents.
Thu Aug 16 21:08:18 EDT 2007 J Phelps <godless@users.sf.net>
* instrument_edit.cpp(timer_callback): Reverted to SVN Revision
101.
* envelope_point_editor.cpp(update_position_list,paintEvent):
Replaced duplicate code in update_position_list with a call to
this->repaint(), which calls paintEvent. This avoids a recursive
paintEvent caused by calling update_position_list() from a
paintEvent (as was being done in Revision 102), but it does not
improve performance: Qt4's performance is degraded at the level of
its graphics primitives, to the point that drawing a vertical line
that moves across the graph of the volume envelope now requires
a high-end CPU, especially if you're drawing other things as well.
* mdi_main_window.cpp: Style changes.
Tue Aug 14 00:13:24 EDT 2007 J Phelps <godless@users.sf.net>
* instrument_edit.cpp(timer_callback): Made this function conform
to Qt4's requirement that all painting take place within
paintEvent calls. The new interface performs much more poorly
than the old one, such that the difference can be seen with the
naked eye.
Volume loops don't seem to work anymore, either.
Mon Aug 13 21:18:55 EDT 2007 J Phelps <godless@users.sf.net>
* mdi_main_window.cpp: Changed all occurences of
action->addTo(menu) to menu->addAction(action).
* mdi_main_window.cpp(newDoc): Added the (now required) call to
ws->addWindow(w) which officially makes the new sub-window "w"
a child of the QWorkspace object "ws". This revives most of the
keyboard functionality that was lost with Revision 100.
It is observed that the apparent lack of cursor-control
in the Pattern Editor (F2) is caused by Qt4's refusal to
perform paint operations outside of the context of a call by
Qt to paintEvent(). Covering and uncovering the window will
reveal all the cursor movement that has been going on in the
interim. This means that a lot of widgets need to be heavily
modified to conform.
Each widget inherits a function called repaint() that causes an
immediate paintEvent.
Mon Aug 13 20:49:23 EDT 2007 J Phelps <godless@users.sf.net>
* Minimum changes required to compile against Qt 4.
Due to many, many differences in not only the
signatures of the interfaces, but in how they work,
the program is now barely usable.
Files affected:
cheeetracker/interface__QT/ample_edit.cpp
cheeetracker/interface__QT/ample_edit.h
cheeetracker/interface__QT/ample_intrument_table.cpp
cheeetracker/interface__QT/ample_intrument_table.h
cheeetracker/interface__QT/ample_player_fdialog.cpp
cheeetracker/interface__QT/ample_player_fdialog.h
cheeetracker/interface__QT/etting_window.cpp
cheeetracker/interface__QT/etting_window.h
cheeetracker/interface__QT/interface.cpp
cheeetracker/interface__QT/interface.h
cheeetracker/interface__QT/intrument_edit.cpp
cheeetracker/interface__QT/intrument_edit.h
cheeetracker/interface__QT/mdi_main_window.cpp
cheeetracker/interface__QT/mdi_main_window.h
cheeetracker/interface__QT/order_and_default_editor.cpp
cheeetracker/interface__QT/order_and_default_editor.h
cheeetracker/interface__QT/orderlit_edit.cpp
cheeetracker/interface__QT/orderlit_edit.h
cheeetracker/interface__QT/pattern_edit.cpp
cheeetracker/interface__QT/pattern_edit.h
cheeetracker/interface__QT/pattern_edit__key.cpp
cheeetracker/interface__QT/pattern_edit_widget.cpp
cheeetracker/interface__QT/pattern_edit_widget.h
cheeetracker/interface__QT/variable_edit.cpp
cheeetracker/interface__QT/variable_edit.h
cheeetracker/trackercore/Error.cpp
cheeetracker/trackercore/SCub
common/interface__QT/audio/ample_editor_clipboard.cpp
common/interface__QT/audio/ample_editor_clipboard.h
common/interface__QT/audio/ample_editor.cpp
common/interface__QT/audio/ample_editor_effect.cpp
common/interface__QT/audio/ample_editor_effect.h
common/interface__QT/audio/ample_editor_format.cpp
common/interface__QT/audio/ample_editor_format.h
common/interface__QT/audio/ample_editor.h
common/interface__QT/audio/ample_viewer.cpp
common/interface__QT/audio/ample_viewer.h
common/interface__QT/audio/ample_viewer_zoom.cpp
common/interface__QT/audio/ample_viewer_zoom.h
common/interface__QT/audio/audio_config.cpp
common/interface__QT/audio/audio_config.h
common/interface__QT/audio/effect_buffer_editor.cpp
common/interface__QT/audio/effect_buffer_editor.h
common/interface__QT/audio/effect_chain_editor.cpp
common/interface__QT/audio/effect_chain_editor.h
common/interface__QT/audio/envelope_editor.cpp
common/interface__QT/audio/envelope_editor.h
common/interface__QT/audio/envelope_point_editor.cpp
common/interface__QT/audio/envelope_point_editor.h
common/interface__QT/audio/mixer_effect_manager.cpp
common/interface__QT/audio/mixer_effect_manager.h
common/interface__QT/audio/note_bridge.cpp
common/interface__QT/audio/note_bridge.h
common/interface__QT/audio/reampler_config.cpp
common/interface__QT/audio/reampler_config.h
common/interface__QT/helper/ccolor_bridge.cpp
common/interface__QT/helper/ccolor_bridge.h
common/interface__QT/helper/ccolor_lit.cpp
common/interface__QT/helper/ccolor_lit.h
common/interface__QT/helper/ccolor_panel.cpp
common/interface__QT/helper/ccolor_panel.h
common/interface__QT/helper/clit_manager.cpp
common/interface__QT/helper/clit_manager.h
common/interface__QT/helper/cpinbutton.cpp
common/interface__QT/helper/cpinbutton.h
common/interface__QT/helper/font_bridge.cpp
common/interface__QT/helper/font_bridge.h
common/interface__QT/helper/keyboard_input_config.cpp
common/interface__QT/helper/keyboard_input_config.h
common/interface__QT/helper/property_bridge_edit.cpp
common/interface__QT/helper/property_bridge_edit.h
common/interface__QT/helper/property_bridge_edit_lit.cpp
common/interface__QT/helper/property_bridge_edit_lit.h
common/interface__QT/helper/vertical_crolled_window.cpp
common/interface__QT/helper/vertical_crolled_window.h
common/interface__QT/helper/vlabel.cpp
common/interface__QT/helper/vlabel.h
common/interface__QT/popup/cpindialog.cpp
common/interface__QT/popup/cpindialog.h
common/interface__QT/popup/effect_elect_popup.cpp
common/interface__QT/popup/effect_elect_popup.h
common/interface__QT/popup/text_area_popup.cpp
common/interface__QT/popup/text_area_popup.h
common/SCub
detect.py
Mon Aug 13 17:22:24 EDT 2007 J Phelps <godless@users.sf.net>
* loader_ct.cpp: Incremented FILE_FORMAT_MINOR so that
older versions of CheeseTracker will issue a warning when
reading files created with newer versions. Stereo samples
are unreadable to old versions of CheeseTracker.
Sat Aug 11 14:17:05 EDT 2007 J Phelps <godless@users.sf.net>
* editor.cpp(get_note_from_key): Removed extra temporary
variable.
* editor_note_insertion.cpp(insert_note_at_cursor): Added
toupper to argument passed to get_note_increment().
* interface.cpp(eventFilter,keyPressEvent,keyReleaseEvent),
* sample_player_fdialog.cpp(eventFilter),
* editor_note_insertion.cpp,
* pattern_edit__keys.cpp(event),
* sample_instrument_table.cpp(event): Removed
the tests that prevented keypresses outside of the range [0-9A-Z]
from being usable as musical-keyboard keys, to fix Bug Tracker
item #1771371.
* editor_commands.cpp(get_note_increment): Removed conversion
to uppercase, as this is handled upstream.
Wed Aug 8 16:23:28 EDT 2007 J Phelps <godless@users.sf.net>
* sample_player_fdialog.(h|cpp): Added a checkbox titled
"Audition samples", checked by default. When activated, the
load-sample dialog behaves as always, allowing samples to be
auditioned with the virtual musical keyboard. When disabled,
samples are not loaded for auditioning and the musical keyboard
keybindings are disabled.
Currently, the positioning of the checkbox is very suboptimal.
Tue Aug 7 21:06:13 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data_fixedpoint.h (fixedpoint_loop): Fixed
a divide-by-zero bug.
Tue Aug 7 19:19:28 EDT 2007 J Phelps <godless@users.sf.net>
* sound_driver_oss.cpp(finish): Throw an exception if
close() returns -1. Also usleep() for 1/4 second to
eliminate the "Device or resource busy" error that
happens if the close() is immediately followed by an
open().
* sound_drive_manager.cpp: Added a try..catch around
one of the calls to Sound_Driver::init(), but more
uncaught calls remain.
Tue Aug 7 15:11:07 EDT 2007 J Phelps <godless@users.sf.net>
* pattern.cpp (set_length): Added a new iterator J. This
function had a habit of calling map::erase() on a map
element pointed to by the iterator I. Following this,
it would increment I. erase() invalidates I, but it has
gone unnoticed because I++ was still able to access the
deallocated memory. But, when this is done with
_GLIBCXX_DEBUG defined, the program aborts().
Now, the new iterator J becomes a copy of I, then I
is incremented, and then J is erased.
Because I is incremented in the middle of the for-loop,
the end condition had to be moved into the loop, as well.
An additional test is placed above the loop to handle
the case in which column[i].begin() == column[i].end(),
which would cause I to be "past-the-end" prior to the
incrementation.
* pattern.cpp (process_retrieve_request): Cast the
signed int p_column to size_t to prevent a warning.
* pattern.cpp: Changed the indentation style.
* editor_selection.cpp(mark_column_sixteen): Added
call to normalize_selection() and set selection_begin_y,
which was previously neglected.
* mdi_main_window.cpp: Updated the APP_VERSION_ string
to 0.9.15.1 and updated the release date.
* version_history.text: Updated.
Tue Aug 7 04:34:46 EDT 2007 J Phelps <godless@users.sf.net>
* pattern_edit__keys.cpp(event): Added keybinding for
Alt+D (select block of 16).
* editor_selection.cpp,editor.h: Added new function,
mark_block_sixteen(), to support the new key command.
Added new Editor::Pattern_Actions enum Pattern_MARK_BLOCK_SIXTEEN.
* editor_commands.cpp(perform_action): Added block to handle the
Pattern_MARK_BLOCK_SIXTEEN menu action.
* mdi_main_window.cpp(MDI_Main_Window()): Added menu item
"Mark- Sixteen notes".
Tue Aug 7 04:06:48 EDT 2007 J Phelps <godless@users.sf.net>
* simple_edit_effects.(cpp|h), edit_effect.h: Altered the
indentation style. Changed all p_begin and p_end arguments to
type ptrdiff_t to get rid of "comparison between signed and
unsigned" warnings, which I have found to be a source of
bugs.
Edit_Effect_PreLoop_Cut::process: The loop pointers are
adjusted before the truncate(), because otherwise,
truncate() does some adjustments of its own which
cause the loop to end up having Start:End positions
0:1.
Mon Aug 6 22:54:33 EDT 2007 J Phelps <godless@users.sf.net>
* interface.cpp(eventFilter): Imposed my intentation style on
the entire file. Also fixed another old bug: eventFilter()
didn't properly handle keyPressEvents for the live keyboard.
As a result, the real-time keyboard sometimes got triggered
twice, which Linietsky worked around by adding a filter
in Player_Realtime_Keyboard::instrument_press_key()
eventFilter now handles those keyPressEvents properly, and
the filter code in (instrument|sample)_press_key has been
removed.
Mon Aug 6 21:28:16 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data_fixedpoint.h(fixedpoint_loop): More
minor math adjustments.
* trackercore/player_rt_keyboard.cpp: Some functions
here are copied in the identically-named
interface_binds/player_rt_keyboard.cpp. A bug was fixed
in the latter copy which remained in the former. Both
copies are fixed now.
The two copies are subly different, and therefore can't
be merged until I better understand them.
Mon Aug 6 19:42:31 EDT 2007 J Phelps <godless@users.sf.net>
* interface_binds/tracker_instance.cpp: Libaudiofile
is registered first, because CheeseTracker calls each
loader in succession to open a file, and the larger
samples are likely to be the ones that are recognized
by Libaudiofile. Loading them with libaudiofile first
will therefore result in shorter load times.
Mon Aug 6 19:32:14 EDT 2007 J Phelps <godless@users.sf.net>
* interface_binds/tracker_instance.cpp: #ifdef'd around
references to Loader_WAV so that the program will compile
when libaudiofile is present.
Mon Aug 6 17:59:32 EDT 2007 J Phelps <godless@users.sf.net>
* cheesetracker/loaders/SCsub: Our own WAV loader is no longer
compiled if libaudiofile and its superior WAV loader is
available.
Mon Aug 6 15:26:42 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data.cpp(eof_reached): In certain cases, eof_reached()
returned an incorrect value. Fixed.
* player_data_control.cpp(lock_player_variables): Added __FILE__
and __LINE__ parameters and corrected usage throughout the
program.
* sample_edit.cpp(load_sample): Added a try..catch to ensure
that a mutex gets unlocked here.
* loader_ct.cpp(load_sample): Now returns SUCCESS instead of
FILE_ERROR.
Now uses the basename of the sample for the name.
* tracker_voice.cpp(add_to_mix_buffer): Now updates the variable
that determines if the sample is playing backward.
* sample_data_fixedpoint.h(fixedpoint_loop): Local loop-position
variables converted from unsigned size_t to signed ptrdiff_t,
because comparisons against the signed current_pos were treating
the latter as an unsigned int. Also, a small adjustment to the
math has been made.
Mon Aug 6 08:08:25 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data_fixedpoint.h(fixedpoint_loop): Attempted to Fix a bug,
but failed: In pingpong loops, the cursor is placed far into the
negative when it reaches the end of the sample in the positive
direction. This results in an Out_Of_Bounds error.
Now, instead, an Out_Of_Bounds error can be made to occur
with current_pos == -1, without the assert() meant to
catch this condition being triggered.
Removed obsolete comments and variables from this function.
* loader_libaudiofile.cpp(load_sample_func): Fixed a bug:
The call to SD->put_sample() was inside the channel loop
instead of outside it, resulting in the sample getting
size*channels frames stored in it.
* sample_data.h,sample_data.cpp(seek): Changed parameter and
return type from size_t to ptrdiff_t, to allow restoration
of negative values from add_to_mix_buffer().
* tracker_voice.cpp(add_to_mix_buffer): No longer turns off
fixedpoint_mode() in the sample before using seek(). This
allows seek() to enable seeks to negative locations for
add_to_mix_buffer() but not for other functions.
Mon Aug 6 07:50:14 EDT 2007 J Phelps <godless@users.sf.net>
* loader_libaudiofile.cpp(load_sample_func): Implemented the
function.
* tracker_instance.h,tracker_instance.cpp: Added the code to
register the libaudiofile loader with the format manager.
* mdi_main_window.cpp: Changed version string to 0.9.15 and
updated release date.
* version-history.text: Updated.
Sun Aug 5 19:21:02 EDT 2007 J Phelps <godless@users.sf.net>
* loader_libaudiofile.cpp, loader_libaudiofile.h:
New loaders added. Currently empty.
* : SCons scripts adjusted to detect libaudiofile
<default GCC search path only> and to compile the
libaudiofile loader only if libaudiofile is found.
Sun Aug 5 18:09:37 EDT 2007 J Phelps <godless@users.sf.net>
* file_format_manager.h, Error.h: Moved definitions of
File_Error and File_Corrupt from the former to the latter.
* file_format_manager.cpp: #included Error.h to allow
code in this file to catch the File_Corrupt and File_Error
exceptions.
* Error.h: Fixed a bug in the THROWF macro: The exception
was declared, set up, but not actually thrown!
Sun Aug 5 17:47:10 EDT 2007 J Phelps <godless@users.sf.net>
* Error.h: New macro THROWF makes it easier to throw
Error exceptions with eprintf'd error messages. It
uses the GNU implementation of variadic macros rather
than C99 variadic macros.
* file_format_manager.h: New Error exception types File_Error
and File_Corrupt.
* file_reader.h: Added a new method get_filename(), which
returns the internally-held filename string for use in error
messages.
* loader_wav.cpp: Throws an exception if an error occurs,
to prevent an infinite loop.
Sun Aug 5 05:37:54 EDT 2007 J Phelps <godless@users.sf.net>
* editor_selection.cpp: Changed the '<' operators in
for-loops in this file back to <=, which they were
previously, to correct a bug with selections in the
Pattern Editor.
Sat Aug 4 21:01:54 EDT 2007 J Phelps <godless@users.sf.net>
* player_rt_keyboard.cpp
(find_empty_channel,find_note_in_channel,instrument_stop_all):
Reversed the order of "for" loops here, so that notes played
with the "live" keyboard occupy the last channels, instead of
the first. This way, the live keyboard does not get trampled on
by the notes in a song, therefore making it possible to play
the live keyboard alongside a song.
Sat Aug 4 19:37:45 EDT 2007 J Phelps <godless@users.sf.net>
* tracker_voice.cpp(add_to_mix_buffer): Changed
"info.lvolsel=vol" to "info.lvolsel=vol/2.0". I don't
remember why this was changed, and it caused a bug. The
change happened before I started keeping this ChangeLog,
and before I started using SVN.
Sat Aug 4 18:51:28 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data.cpp(get_sample_for_cosine_mixer,
do_cubic_mixer_voodoo, get_sample_for_linear_mixer):
Reintroduced blank-sample generation when these are called
with Sample_Data::eof_reached() == true. Necessary now that
fixedpoint_move_cursor no longer ensures that the cursor will
stay within bounds.
* sample_data.cpp(blank_sample): Changed "zero" from being a
template argument to a function argument, because GCC 4.1.2
can't compile this template if TYPE==float.
Sat Aug 4 18:26:52 EDT 2007 J Phelps <godless@users.sf.net>
* tracker_voice.cpp(add_to_mix_buffer): Samples no longer
continue playing past the end.
Sat Aug 4 18:08:08 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data_fixedpoint.h(fixedpoint_move_cursor): Removed
bounds checking, as this is handled in fixedpoint_loop.
Sat Aug 4 15:21:40 EDT 2007 J Phelps <godless@users.sf.net>
* resample_kernel.cpp (mix_sample): Fixed a math bug that caused
pitch envelopes to sound like shit if they were used as filters.
Fri Aug 3 04:54:44 EDT 2007 J Phelps <godless@users.sf.net>
* dds_helpers.cpp (get_sample_data,set_sample_data):
Added support for multi-channel samples, at last!!!!
Fri Aug 3 02:44:54 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data.h
sample_data.cpp (get_current_pos): Changed return type
from size_t to ptrdiff_t.
* tracker_voice.h: Changed type of Tracker_Voice::current_index
from size_t to ptrdiff_t.
Fri Aug 3 01:54:44 EDT 2007 J Phelps <godless@users.sf.net>
* sample_viewer.cpp (paintEvent): Fixed fencepost bug
that was causing the GNU vector class's array bounds
checking to trip.
* mdi_main_window.cpp: Updated version and website strings.
Wed Aug 1 02:02:12 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data_fixedpoint.h (fixedpoint_loop): Copied in
the version of fixedpoint_loop() from Revision 57.
* sample_data.h: Changed type of current_pos from size_t
to ptrdiff_t.
* sample_data_fixedpoint.h (fixedpoint_loop): Restored the
"sustaining" argument.
* tracker_voice.cpp (add_to_mix_buffer): fixedpoint_loop() is
called with "false" as the argument, until the code to load
sustain loops from files is implemented.
Mon Jul 30 12:32:46 EDT 2007 J Phelps <godless@users.sf.net>
* tracker_voice.cpp (add_to_mix_buffer): Added 1 to
calculation of the number of "virtual samples", as in
cheesetracker-0.9.9. This was thought to be an off-by-one
bug, but it is now known that this is required for looping
to work properly.
Mon Jul 30 03:37:11 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data.cpp (Copy constructor): Fixed a bug where
copy-constructed Sample_Data structures don't allocate
a new mutex, and therefore crash upon deletion.
Wed Jun 27 10:10:49 EDT 2007 J Phelps <godless@users.sf.net>
* loader_raw.cpp
* loader_wav.cpp
* loader_it_samples.cpp
* loader_s3m.cpp
* saver_raw.cpp
* saver_it.cpp
* saver_wav.cpp
* interface.cpp
* pattern_edit__keys.cpp
* player_data_events.cpp
* pattern.cpp
* player_data_control.cpp
* tracker_voice.cpp
* simple_edit_effects.cpp
* mutex_queue.cpp
* mutex_lock.cpp
* mutex_lock.h
* multireader_lock.cpp
* sample_data.h
* sample_data.cpp
* dds_helpers.cpp
* sound_driver_manager.cpp
* sample_viewer.cpp
* effect_chain_editor.cpp
* sample_editor_clipboard.cpp
* mixer_effects_manager.cpp
* envelope_point_editor.cpp
* mutex_lock_pthreads.h: Added __FILE__ and __LINE__ arguments
for all mutex-related types except the multireader lock (which
is not currently in use). This allows deadlocks to be traced to
the source file and line where the mutex was obtained.
Mon Jun 25 14:01:30 EDT 2007 J Phelps <godless@users.sf.net>
* voice.control.h(UsedSample): Changed type of
Voice_Control::UsedSample::offset to size_t.
* channel_control.h: Changed type of
Channel_Control::sample_start_index from Sint32 to size_t.
* player_data_notes.cpp(process_new_note): Changed
assignment of (now unsigned) sample_start_index from -1
to 0.
* tracker_voice.h: Added new member fixedpoint_offset to
struct Tracker_Voice::Info.
* sample_data.h/sample_data_fixedpoint.h: Added new member
functions get_fixedpoint_offset and set_fixedpoint_offset.
* tracker_voice.cpp(add_to_mix_buffer): fixedpoint_offset
from the sample is now preserved across calls to
add_to_mix_buffer.
Mon Jun 25 06:37:25 EDT 2007 J Phelps <godless@users.sf.net>
* editor_selection.cpp
* sample_editor_effects.cpp
* simple_edit_effects.cpp: Fixed off-by-one for-loop bugs.
* message_box.h: Added new macro GENERIC_TRY_CATCH to avoid
reimplementing try-catch blocks in Qt-called functions.
Sun Jun 24 17:51:49 EDT 2007 J Phelps <godless@users.sf.net>
* tracker_voice.cpp(add_to_mix_buffer): Added use of the GMP
library. It turns out that even the small amount of fixed-point
math used here may cause an integer overflow. On 32-bit systems,
it is possible to simply use 64-bit integers, so #ifdefs were put
in to that effect. Systems with sizeof(size_t) == sizeof(Uint64)
need GMP.
* SConstruct, detect,py: Updated to detect the need for GMP.
Sun Jun 24 02:12:38 EDT 2007 J Phelps <godless@users.sf.net>
* tracker_voice.cpp(add_to_mix_buffer)
sample_data_fixedpoint.h(fixedpoint_loop)
sample_data.h: Moved the code that does looping
from add_to_mix_buffer to fixedpoint_loop, a new
function.
Sat Jun 23 22:38:25 EDT 2007 J Phelps <godless@users.sf.net>
* resampler_linear.cpp
resampler_cosine.cpp
resampler_cubic.cpp
resampler_raw.cpp: Rewrote the resamplers. They now
all use the code in resampler_kernel.cpp, which eliminates
much of the code duplication.
Sat Jun 23 03:51:59 EDT 2007 J Phelps <godless@users.sf.net>
* tracker_voice.h: Removed unused definition for
Tracker_Voice::FRACTIONAL.
* tracker_voice.cpp: Reintroduced SOME of the fixed-point math.
Removed the variable "debug_int", which was being used to
trace a memory error (which turned out to be caused by
improper data sharing between threads).
* typedefs.h: Macro WARN() does not use ANSI color sequences
unless ANSI_COLORS is defined.
* resampler_manager.cpp (get_resampler): Replaced NULL return
value with an exception-throw, since the NULL return value is
never checked for.
New behavior: get_resampler(-1) is equivalent to
get_resampler(get_default_resampler()), because this is how
it's used.
Added "signed" to the parameter type of p_index to show
that it really _is_ supposed to be signed.
* resampler_instance.h (set_current_resampler): Replaced use of
ERROR macro with an exception-throw.
* resampler_instance.h (mix): Simplified the initialization
of resampler_idx because it is no longer necessary to call
Resampler_Manager::get_default_resampler() explicitly.
* fixedpoint.h: Renamed to sample_data_fixedpoint.h. Preprocessor
macros will attempt to prevent its inclusion in source files
other than sample_data.cpp.
* fixedpoint_defs.h: Created. Macros previously in fixedpoint.h
have been moved here. It turns out that certain calculations
in tracker_voice.cpp cannot be made accurately without
fixed-point math.
* resampler_kernel.cpp/h: Created. This is a cleaner
implementation of the algorithm previously implemented
with macros from helpers.h.
Fri Jun 15 13:24:02 EDT 2007 J Phelps <godless@users.sf.net>
* cheesetracker/loaders/loader_raw.cpp
* cheesetracker/loaders/loader_wav.cpp
* cheesetracker/loaders/loader_it_samples.cpp
* cheesetracker/loaders/loader_s3m.cpp
* cheesetracker/savers/saver_raw.cpp
* cheesetracker/savers/saver_it.cpp
* cheesetracker/savers/saver_wav.cpp
* cheesetracker/trackercore/tracker_voice.cpp
* common/plugins/edit_effects/simple_edit_effects.cpp
* common/interface__QT/audio/sample_viewer.cpp
* common/interface__QT/audio/sample_editor_clipboard.cpp
* common/components/audio/sample_data.h
* common/components/audio/sample_data.cpp
* common/components/audio/dds_helpers.cpp:
Now using Mutex_Lock instead of multireader_lock for
access to Sample_Data. Since Sample_Data's access
functions also manage an internal iterator (instead
of the iterator being in the calling function),
Sample_Data must be locked during "read" operations
as well as "write" operations.
* pattern.cpp (process_retrieve_request): Performance enhancement:
Removed exception-throwing behavior because all functions that
use this function were catching the exception and substututing
"empty_note" for the return value. So now, it simply returns
empty_note.
Wed Jun 13 01:10:50 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data.cpp: ASSERT_NOTFIXEDPOINT is defined to nothing
if NDEBUG is defined. * common/components/audio/fixedpoint.h:
Created. The fixed-point functions from sample_data.h are
defined here, and there are comments that explain how the whole
fixed-point scheme works.
Incidentally, another fixedpoint.h file was discovered,
common/components/data/fixedpoint.h, which defines a fixed-point
class for which there are no method definitions in the source.
Tue Jun 12 01:32:10 EDT 2007 J Phelps <godless@users.sf.net>
* multireader_lock.h/cpp: Created. Any number of threads
can hold an multireader_lock, and any one process can lock
all the others out. This allows many threads to read
a memory region, and one thread to kick the others out
for writing.
* sample_data.h: Now uses a multireader_lock instead of
a mutex.
Mon Jun 11 14:18:56 EDT 2007 J Phelps <godless@users.sf.net>
* mutex_lock.h: New method on Mutex_Lock_Container: add().
This makes it possible to put more than one mutex in the
same Mutex_Lock_Container, all of which will be released
together.
Mon Jun 11 10:16:54 EDT 2007 J Phelps <godless@users.sf.net>
* mutex_lock.h: New class, Mutex_Lock_Container, which locks a
mutex during construction and unlocks it upon destruction.
* sample_data.h/cpp (lock): Now returns pointer to
Mutex_Lock_Container.
* sample_data.h/cpp (unlock): Removed.
* sample_data.h/cpp (seek): Now returns the final seek position.
* tracker_voice.cpp (mix): Using sample_data mutexes.
* tracker_voice.cpp (add_to_mix_buffer): Renamed several
cryptically-named variables, corrected an OB1 bug in the
loop-checking logic.
Removed the 300-page dissertation on fixed-point numbers.
* sample_data.cpp (resample functions): Commented out the checks
for sample EOF, as I attempt to make tracker_voice stay
perfectly within the boundaries.
* resampler_instance.h/cpp (set_fractional): Removed.
* : Removed all variables and class members named
"fractional_size".
Sun Jun 10 13:50:36 EDT 2007 J Phelps <godless@users.sf.net>
* resampler_manager_new.cpp: Removed.
* dds_helpers.cpp (get_effect_chain_data): Corrected "taking
address of temporary" warning from G++ by creating new local
variable "property_list".
Also moved curly braces in function definitions to Column 1,
so that ']]' works in vi.
Sun Jun 10 13:41:59 EDT 2007 J Phelps
* loader_xm.cpp (loader_instrument_internal): Moved the
sample.data.seek(0) call down to the part that loads the sample
data from the disk.
Sun Jun 10 06:55:15 EDT 2007 J Phelps <godless@users.sf.net>
* sample_data.cpp (fixedpoint_move_cursor): Removed the for-loop
that was previously placed around the whole function. This
for-loop was intended for a different design that never got
implemented. Instead, it caused a bug.