AIMP Forum

AIMP for PC => Ошибки и замечания / Bugs => Обработано / Processed => Topic started by: adem on December 24, 2025, 19:30:24

Title: [x] [3027] [x64] Перетаскивание большой папки из фонотеки в плейлист с задержкой
Post by: adem on December 24, 2025, 19:30:24
ОС: Windows 10
AIMP: v6.00.3027 Alpha 5 64-bit (19.12.2025)

1. Имеется коллекция размером 150 ГБ
2. Добавить её в фонотеку одной папкой
3. Перенести через drug'n'drop эту папку из дерева фонотеки в плейлист. При чём нужно держать левую кнопку мыши зажатой до того момента, пока курсор мыши не поменяет состояние.

Результат: соответствующий курсор мыши и кружок выбора действия появляются не сразу, а с задержкой в 3-4 секунды. Если эту же операцию с этой же папкой произвести из Проводника, то ощутимой задержки не будет.
Доп. инфо.: для папки в 70 ГБ задержка раза 2 меньше. Изначально казалось, что drug'n'drop вообще не работает для больших папок, ибо по привычке сразу отпускал кнопку мыши. Так, пока не догадался держать клавишу мыши зажатой до конца. Думаю, для рядового пользователя это поведение тоже будет не очевидно.
Видео: https://drive.google.com/file/d/1z3fw2FK2P2vo2zyeLMiyBo0y7WGNh4l3/view?usp=drive_link
Title: Re: [3027] [x64] Перетаскивание большой папки из фонотеки в плейлист с задержкой
Post by: Artem on December 24, 2025, 21:57:07
Проводник кидает папку, а плеер - все 150 ГБ файлов. А все потому, что в фонотеке может быть а) не вся физическая папка б) узел вообще может не быть папкой
Title: Re: [3027] [x64] Перетаскивание большой папки из фонотеки в плейлист с задержкой
Post by: Artem on December 24, 2025, 21:57:32
Я конечно посмотрю, что можно пооптимизировать, но лаг все равно какой-то будет
Title: Re: [3027] [x64] Перетаскивание большой папки из фонотеки в плейлист с задержкой
Post by: adem on December 24, 2025, 22:05:21
Ключевая проблема в том, что пользователь не сразу поймёт, что drug'n'drop работает. Т.е. если можно менять состояние курсора моментально, при помещении его в область плейлиста — то было бы здорово. А то, с какой задержкой появится кружок выбора действия после отпуска кнопки, это менее важно.
Title: Re: [3027] [x64] Перетаскивание большой папки из фонотеки в плейлист с задержкой
Post by: Алексей Долматов on December 24, 2025, 22:58:57
Напрашивается оптимизация процесса анимации по перетаскиванию. В частности, как подобие системного поведения. При отпускании перетаскивания включаем курсор "часы" или "стрелка с часами", а после обработки запроса появляется функционал выбора действия.

В принципе, можно попробовать вписать в доп. слой/текстуру окна действия на уровне движка и редактора обложек. Если обложка старая, то показываем системный курсор ожидания. Если обложка новая (с новым элементом текстуры), то показываем ожидающее окно выбора действия под стиль обложки.

Несколько иной подход, если сделать анимацию на уровне плеера. Это может быть аналог анимации добавления файлов проводника, но в "бесконечном" стиле.

Странно, что вообще не реализована "статусная" строка, как в фонотеке. Перетащил файлы, процесс отображается в рамках общего стиля обложки с отдельной кнопкой отмены действия. Сейчас несколько перетаскиваний создают несколько последовательных окон добавления файлов. Можно было бы сделать "очередь", т.е. всё в рамках общего пополняемого списка. Да, это несколько непривычно смотреть строку статуса. Но, почему бы и не протестировать, в т.ч. возможность работы с плейлистом в момент добавления файлов. Хоть некоторые действия (сортировку, группировку) придётся блокировать в момент обновления плейлиста.



Дальше вижу два подхода:
1. Подготовка (анализ) данных для вставки в плейлист выполняется в основном потоке и он запускается после окончания перетаскивания, отображение часов;
2. Анализ запускается сразу в фоновом потоке при попадании в зону плейлиста. Если пользователь прерывает перетаскивание (за пределы плейлиста и отпускает курсор, нажимает ESC при удержании курора), то прерываем фоновый анализ, чтобы не "вешать" плеер доп. работой. Это может ускорить перетаскивание, но может увеличить нагрузку при множественном отказе от перетаскивания. Нужно проверять, возможно ли моментально отказаться от анализа данных или запускать ещё один фоновый процесс с проверкой насколько влияет по нагрузке предыдущий поток.

Но, это, уже разработчику лучше известно, что и как можно реализовать в рамках функционала плеера.
Title: Re: [3027] [x64] Перетаскивание большой папки из фонотеки в плейлист с задержкой
Post by: Artem on December 25, 2025, 12:02:02
Напрашивается оптимизация процесса анимации по перетаскиванию. В частности, как подобие системного поведения. При отпускании перетаскивания включаем курсор "часы" или "стрелка с часами", а после обработки запроса появляется функционал выбора действия.

Мне кажется получится обойтись без этих ухищрений.

Странно, что вообще не реализована "статусная" строка, как в фонотеке./quote]

Фонотека часто обновляет свои данные (по внешним событиям), поэтому там изначально было все построено на фоновой работе, а добавление файлов по drag-n-drop вообще было добавлено после релиза. Ну и фонотека посвежее, чем плейлисты =)

Сейчас несколько перетаскиваний создают несколько последовательных окон добавления файлов. Можно было бы сделать "очередь", т.е. всё в рамках общего пополняемого списка

Можно было бы, но кроме "визуального спокойствия" это ничего не даст, скорее даже на оборот - замедлит процессинг.
Title: Re: [x] [3027] [x64] Перетаскивание большой папки из фонотеки в плейлист с задержкой
Post by: adem on December 27, 2025, 07:00:00
Исправлено в v6.00.3028 Alpha 7 64-bit (26.12.2025): https://drive.google.com/file/d/1cUyBTQULAuhlMeEYQbbQA_KFQPbI-ToK/view?usp=drive_link