Changeset 668


Ignore:
Timestamp:
Jul 12, 2025, 10:49:00 PM (24 hours ago)
Author:
chronos
Message:
  • Modified: Improved audio libraries detection and load error evaluation.
Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Music.pas

    r666 r668  
    5757
    5858  {$IFDEF UNIX}
    59   SndFileFileName := 'libsndfile.so.1';
     59  SndFileFileName := 'libsndfile.so';
    6060  PortAudioFileName := 'libportaudio.so';
    6161  XmpFileName := 'libxmp.so.4';
     
    7272  {$ENDIF}
    7373
    74   if (SndFileFileName <> 'system') and  (SndFileFileName <> '') then
    75   if uos_TestLoadLibrary(PChar(SndFileFileName)) = False then
    76    SndFileFileName := SndFileFileName + '.2';
    77 
    78   if uos_LoadLib(PChar(PortAudioFileName), PChar(SndFileFileName), Nil, Nil,
    79     Nil, Nil, PChar(XmpFileName)) <> 0 then
    80     raise Exception.Create('Error while loading audio libraries.');
     74  if (PortAudioFileName <> 'system') and (PortAudioFileName <> '') then
     75  if not uos_TestLoadLibrary(PChar(PortAudioFileName)) then begin
     76    if uos_TestLoadLibrary(PChar(PortAudioFileName + '.1')) then
     77      PortAudioFileName := PortAudioFileName + '.1'
     78    else
     79    if uos_TestLoadLibrary(PChar(PortAudioFileName + '.2')) then
     80      PortAudioFileName := PortAudioFileName + '.2'
     81    else PortAudioFileName := '';
     82  end;
     83
     84  if (SndFileFileName <> 'system') and (SndFileFileName <> '') then
     85  if not uos_TestLoadLibrary(PChar(SndFileFileName)) then begin
     86    if uos_TestLoadLibrary(PChar(SndFileFileName + '.1')) then
     87      SndFileFileName := SndFileFileName + '.1'
     88    else
     89    if uos_TestLoadLibrary(PChar(SndFileFileName + '.2')) then
     90      SndFileFileName := SndFileFileName + '.2'
     91    else SndFileFileName := '';
     92  end;
     93
     94  if uos_LoadLib(PChar(PortAudioFileName), PChar(SndFileFileName), nil, nil,
     95    nil, nil, PChar(XmpFileName)) <> 0 then begin
     96      if uosLoadResult.PAloaderror = 1 then
     97        raise Exception.Create(PortAudioFileName + ' not found.');
     98      if uosLoadResult.PAloaderror = 2 then
     99        raise Exception.Create(PortAudioFileName + ' can''t be loaded.');
     100      if uosLoadResult.SFloaderror = 1 then
     101        raise Exception.Create(SndFileFileName + ' not found.');
     102      if uosLoadResult.SFloaderror = 2 then
     103        raise Exception.Create(SndFileFileName + ' can''t be loaded.');
     104      if uosLoadResult.XMloadError = 1 then
     105        raise Exception.Create(XmpFileName + ' not found.');
     106      if uosLoadResult.XMloadError = 2 then
     107        raise Exception.Create(XmpFileName + ' can''t be loaded.');
     108    end;
    81109
    82110  Initialized := True;
  • trunk/Packages/uos/uos_flat.pas

    r665 r668  
    24582458begin
    24592459  Result := uos.uos_loadlib(PortAudioFileName, SndFileFileName, Mpg123FileName, Mp4ffFileName, FaadFileName, opusfileFileName, nil, nil);
     2460  uosLoadResult := uos.uosLoadResult;
    24602461end;
    24612462
     
    24632464begin
    24642465  Result := uos.uos_loadlib(PortAudioFileName, SndFileFileName, Mpg123FileName, Mp4ffFileName, FaadFileName, opusfileFileName, XMPFileName, nil);
     2466  uosLoadResult := uos.uosLoadResult;
    24652467end;
    24662468
Note: See TracChangeset for help on using the changeset viewer.