1
0
Fork 0
Commit graph

948 commits

Author SHA1 Message Date
Patryk Obara
bdf67cdbcc Merge branch 'svn/trunk' r4330 2020-02-22 21:10:57 +01:00
Peter Veenstra
57bf045cc8 some big endian improvents and drive_fat fixes. (jmarsh)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4330
2020-02-22 12:06:40 +00:00
krcroft
c132263116 Add partial DAE support for compressed Redbook-compliant tracks 2020-02-18 18:54:41 +01:00
krcroft
fdf103a111
Fix sector 0 playback bug
This bug prevented reporting of correct playback position on
pure-audio CDs with zero PREGAP.
2020-02-17 12:19:21 -08:00
Patryk Obara
5bd3a4ac8d Merge branch 'svn/trunk' r4328 2020-02-15 21:27:20 +01:00
Peter Veenstra
27610a2e66 Small cleanup and move to ++i instead of i++ for iterators in this file
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4328
2020-02-15 17:22:00 +00:00
Patryk Obara
80d71e7442 Merge branch 'svn/trunk' r4320 2020-02-12 09:00:33 +01:00
ripsaw8080
c91f46905b Report Q-Channel track number in BCD, meaning it is not converted to binary by the CD-ROM device driver. Fixes the CD-Player feature of DOS Navigator 1.51 when playing past track 15.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4320
2020-02-11 22:02:03 +00:00
krcroft
36e3789e91
Remove unecessary check and zeroing of arguments
This function uses its boolean return code to indicate success
or failure, which all callers check prior to using any of the
referenced arguments.  Therefore it's unecessary to zero-out
referenced arguments or use intermediate variables.
2020-02-07 00:23:36 -08:00
krcroft
8382eb0e7e
Reduce the track number's type to comply with MSCDEX 2020-02-07 00:23:36 -08:00
krcroft
e1fec4beb7
Refactor slightly to clarify the flow and move to one return-point
This also squashes a PVS high issue mentioning that 'subUnit'
is checked after it was used.
2020-02-07 00:23:35 -08:00
krcroft
0272145955
Make the MSCDEX Audio Disk Info return compliant track-ranges
The specification says that legal track values range from 1 to 99,
where as the prior code would return 0 if any issue was encountered.
The spec has no allowance for issues in this function, and therefore
we're bound to simply return 1 instead.
2020-02-07 00:23:34 -08:00
krcroft
1cc88953de
Simplify Pause and Stop CD states 2020-02-07 00:23:34 -08:00
krcroft
7cac8e4c4f
Mimick CD players when first positioning the play head
For example, audio CD players will typically position themselves in
preparation to play the first audio track when "Play" is pushed.
This even occurs for mixed-mode CDs, where the player will start
playing at the first audio track. Therefore, we try to find the most
viable audio track and only fall back to defaults if needed.
(instead of "all zeros" like before).
2020-02-07 00:23:34 -08:00
krcroft
7f39fe86b4
Use "=" assignment when creating references and iterators 2020-02-07 00:23:31 -08:00
krcroft
eb1a9285fd
Simplify some combersome math statements
With types refined, we can switch to cleaner integer
math and avoid casting (to float and back to ints), and also
avoid ceil((float) a / b) by using the pure-integer form
of (a + b - 1) / b
2020-02-07 00:22:46 -08:00
krcroft
0dd9eca6d6
Reformat a couple statements and improve some log messages 2020-02-07 00:22:46 -08:00
krcroft
55f6e4307f
Simplify ISO size calculation
This is simplified by no longer retaining the read position,
which is unecessary because all read operations are offset
from an initial absolute position (so this was unecessary code).
2020-02-07 00:22:45 -08:00
krcroft
4aa3311021
Refine types and sizes to more accurately reflect the values they hold
This allows for fewer casts, simpler math, and more readable code
in subsequent commits.
2020-02-07 00:22:40 -08:00
Patryk Obara
81954dfe28 Use safe_strcat 2020-02-06 09:24:05 +01:00
Patryk Obara
2983de4db4 Use unsigned for numbers in shortened filenames
Bitu (aka uintptr_t) is not necessary for handling shortened files,
as we can represent max 10^7 shortened files anyway; unsigned is good
enough.

This allows use to use simple %u for conversion instead of PRIuPTR,
which caused a bug on AmigaOS on PPC.

Fixes: #162
2020-02-06 09:24:05 +01:00
Patryk Obara
4a6704367b Reorder includes for drive_cache
Class DOS_Drive_Cache is declared in dos_system.h, but this header was
indirectly included.  Remove faulty windows.h include (the correct one
exists in cross.h already).
2020-02-06 09:24:05 +01:00
Patryk Obara
079e1e1aa0 Remove pointless GCC_UNLIKELY from name shortener 2020-02-06 09:24:05 +01:00
krcroft
93f9cd7e4e Fix audio-related static analysis issues 2020-01-29 17:13:25 +01:00
krcroft
f6060a5148 Allow Opus CDDA support to be optionally disabled
Adds a `--disable-opus-cdda` flag that explicitly disables support
for Ogg Opus CDDA tracks and in turn avoid the need for the Opus package
dependencies such as the opusfile, opus, and ogg libraries.

This feature does not alter the default operation of ./configure, which
is to enable Opus CDDA support and quit if the Opus dependency package,
opusfile, is not found.  The user can then choose to either a) install
the package or b) explicitly disable Opus support.

This commit also includes:

- fixes for a double-free in the MP3 close routine that
  was discovered during testing

- a message if a CD audio track cannot be added during CDROM
  mounting (such as attempting to use Opus tracks when the binary
  does not support them).

- the --disable-opus-cdda flag in our config heavy workflow
2020-01-27 10:46:21 +01:00
krcroft
878959a0aa Formatting and review fixes 2020-01-22 09:40:00 +01:00
krcroft
c7484ceaaa Improve compliance when printing drive labels 2020-01-22 09:40:00 +01:00
krcroft
ec52c3ef3d Fix NULL issues in programs-related code 2020-01-22 09:40:00 +01:00
krcroft
9d69662001 Fix NULL issues in drive-related code 2020-01-22 09:40:00 +01:00
krcroft
02506d293e Fix static-analysis issues in cdrom_image
One issue in BinaryFile's constructor:
There is no sense in testing the 'file' pointer against null, as
the memory was allocated using the 'new' operator. The exception
will be generated in the case of memory allocation error.
'new'
 - https://www.viva64.com/en/w/v668/

Two issues relating to assigning a value that's already assigned
 - https://www.viva64.com/en/w/v1048/
2020-01-22 09:40:00 +01:00
Patryk Obara
da5e424dc7 Merge branch 'svn/trunk' r4309 2020-01-21 15:52:46 +01:00
Peter Veenstra
88ac8b2dd9 Copy working directory when mounting an overlay. Add some more strings to language file.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4309
2020-01-21 09:02:06 +00:00
Patryk Obara
2310498f79 Merge branch 'svn/trunk' r4308 2020-01-13 00:52:10 +01:00
Peter Veenstra
8be4b7a850 Move already mounted checks upwards. (jmarsh)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4308
2020-01-12 18:14:14 +00:00
Patryk Obara
381dd8be87 Make setter for RO-medium flag a virtual method
This way we prevent pointless dynamic_cast; correct usage of
dynamic_cast requires a nullcheck, which was missing in this case
causing Coverity to complain.

Instead of changing cast, let's make this method a virtual one in base
class - this way we could reuse it in future for cases outside of CD-ROM
(e.g. write-protected floppies).
2020-01-11 20:52:55 +01:00
Patryk Obara
1953d0880b Redefine fileno for Windows
This redefine prevents fake deprecation warning on Windows (C4996) and
prevents a compilation problem when using old MinGW and Windows XP.
2020-01-11 17:50:28 +01:00
krcroft
0f37f30246 Remove ClearTracks() and fix ref-assignment 2020-01-07 19:46:32 +01:00
krcroft
cc7d6b6e43 Fix double-free in destructor of CDROM_Interface_Image
Unmounting single binary-file CDROM images would result in a
crash as flagged by @dreamer_ in issue #112, who noted that
multiple tracks point to the same TrackFile (track.file field).

During destruction, the pre-C++11 code used a temporary
`TrackFile* last` variable to store the currently deleted
track.file's value and only delete the next track.file if it's
not equal to `last`. The result of this is that only the
first-encountered track.file was deleted and all subsequent
and back-to-back duplicate track.file values were left as-is.

This commit replaces the Track object's 'file' member pointer
with a shared_ptr, which effectively does the same thing by
only deleting the last reference.

The shared_ptr simplifies some error-cases where we previously
had to delete the Track.file allocation, but can now simply
let the Track object go out-of-scope and let the shared_ptr
delete it's managed object (if it has one).
2020-01-07 19:46:32 +01:00
Patryk Obara
c4dba16740 Move drives.h to common include dir
Judging by the usage, this header belongs in there instead of being
limited to dos module only.  This change makes it easier to reuse code
for new features related to drives mounting/unmounting.
2020-01-04 08:26:22 +01:00
Patryk Obara
2694aca2b2 Fix effc++ warnings in drives.cpp 2020-01-04 08:26:22 +01:00
Patryk Obara
8da42c5983 Remove false friend declarations
The single use from friended class is in public interface. Removal of
friend designators allows Clang to pinpoint few additional unused
private fields.
2020-01-04 08:26:22 +01:00
Patryk Obara
c81269eebe Remove extern global variable from bios_disk.h
This way interface of swapInDisks function is cleaner and we avoid a
warning when comparing (previously) signed swap position with an
unsigned array size or index.

Also, add some documentation to swapInDisks function.
2019-12-18 23:56:28 +01:00
Patryk Obara
5f282f6015 Use shared_ptr to prevent double free on imageDisk
Also, replacing unique_ptr with shared_ptr makes it unnecessary to move
a pointer when swapping boot disks; moving shared_ptr would lead to
inconsistent internal state.

Fixes: #94
2019-12-18 23:56:28 +01:00
Patryk Obara
70a1f9f0d1 Remove PHYSICAL_CD from MountType enum 2019-12-18 22:31:19 +01:00
Patryk Obara
94b987b5b5 Update MSF conversion functions
All usecases, that required these functions to pass 3 values separately
are now gone, we can simply pass/return a struct now.
2019-12-18 22:31:19 +01:00
Patryk Obara
f66a4f5416 Fix a number of effc++ warnings 2019-12-18 22:31:19 +01:00
Patryk Obara
8b86910c33 Add user-visible warnings about removed options 2019-12-18 22:31:19 +01:00
Patryk Obara
d035c2cbd9 Move GetMountType to dos_mscdex file
This was the only user of this function.
2019-12-18 22:31:19 +01:00
Patryk Obara
3e6e97bf47 Create dos_mscdex header 2019-12-18 22:31:19 +01:00
Patryk Obara
28dd59e03e Introduce MountType enum for CDROM_GetMountType 2019-12-18 22:31:19 +01:00