Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Beschleunigung von Laderoutine

  Alt 15. Aug 2016, 19:51
Meine Laderoutine..

Delphi-Quellcode:
  // is ShowCover
  if ShowCover then
  begin

    if CoverPath <> 'then
    begin
      if CoverPath <> Path then
        ScanDirectory(CoverPath, 'jpg, jpeg, png', False);

      if aCovers.count > -1 then
      begin
        LstCoverPath.Clear;
        LstQuadTexture.Clear;
      end;

      if (aCovers.count <= QuadCount) then
      begin
        for I := 0 to (aCovers.count - 1) do
        begin
          // extract Filename
          aFileName := ExtractFileName(aCovers[I]);
          // extract extension
          aFileName := Copy(aFileName, 1, Length(aFileName) - Length(ExtractFileExt(aFileName)));
          // uppercase
          aFileName := AnsiUpperCase(aFileName);

          Name := ExtractFileName(GetAlbumArtisName);
          Name := Copy(Name, 1, Length(Name) - Length(ExtractFileExt(Name)));
          if (aFileName = 'FOLDER') or (aFileName = Name) then
          begin
            if quadTexture[I] <> NoCoverTexture then
              glDeleteTextures(1, @quadTexture[I]);

            LoadTexture(aCovers[I], quadTexture[I], False);
            LstQuadTexture.Add(IntToStr(quadTexture[I]));
            LstCoverPath.Add(aCovers[I]);
          end;
        end; // end for i

        transAlpha := 1.0;
        if (LastAddCover = 0) or (LastAddCover = Round(NoCoverTexture)) then
          Result := False;
        if LstCoverPath.count <> 0 then
        begin
          InitAlbumIniPath;
          SaveINI;
        end;
        exit; // exit For
      end
      else // else aCovers.count
      begin
        if (aCovers.count > QuadCount) then
        begin
          aCovers.Delete(0);
          for I := 0 to (aCovers.count - 1) do
          begin
            // extract Filename
            aFileName := ExtractFileName(aCovers[I]);
            // without extension
            aFileName := Copy(aFileName, 1, Length(aFileName) - Length(ExtractFileExt(aFileName)));

            aFileName := AnsiUpperCase(aFileName);

            Name := AnsiUpperCase(GetAlbumArtisName);
            Name := Copy(Name, 1, Length(Name) - Length(ExtractFileExt(Name)));
            if (aFileName = 'FOLDER') or (aFileName = Name) then
            begin
              if quadTexture[I] <> NoCoverTexture then
                glDeleteTextures(1, @quadTexture[I + 1]);

              LoadTexture(aCovers[I], quadTexture[I], False);
              LstQuadTexture.Add(IntToStr(quadTexture[I]));
              LstCoverPath.Add(aCovers[I]);
            end;
          end; // end for i
          transAlpha := 1.0;
          if LstCoverPath.count <> 0 then
          begin
            InitAlbumIniPath;
            SaveINI;
          end;
        end; // end aCovers.count
      end; // end else aCovers.count
    end; // end CoverPath
  end; //end ShowCover
Hat jemand eine Idee wie man das beschleunigen könnte.?
Das Problem ist das ich bei jeder neu eingelegten CD (Abspielen eines Albums)
Alle Covers neu eingelesen und zugeordnet werden müssen da ich das erste Cover des Karussells lösche um am ende ein neues zu addieren.
Aber nur dann wenn das Cover sich noch nicht im Karussell befindet.

Mir fällt im Moment keine schnellere Lösung ein.
Was die Anwendung blockt ist LoadTexture.
Den Prozess weiterlaufen lassen bringt keine Abhilfe weil man dann das ersetzen jedes Cover sehen kann.

gruss
  Mit Zitat antworten Zitat