Far 3 & SettingsControl

Место, где разработчики плагинов могут поделиться своим опытом.
Shmuel
Posts: 5646
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

Far 3 & SettingsControl

Post by Shmuel » Sat 15 Dec, 2018 18:59

Latest post of the previous page:

DrKnS wrote:
Sat 15 Dec, 2018 18:51
возможно, пытается открыть уже эксклюзивно кем-то (в т.ч. собой) открытую базу
Ну да, только в Far API разве можно открыть базу не эксклюзивно?

User avatar
DrKnS
Posts: 5082
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 183 times

Far 3 & SettingsControl

Post by DrKnS » Sat 15 Dec, 2018 19:14

Сейчас - нельзя, поэтому я и интересуюсь - зачем вам ускорять код, который всё равно не работает?

Если из plugsettings.cpp выкинуть PluginsCfg->BeginTransaction() и PluginsCfg->EndTransaction() - скорее всего, будет можно, но настройки, наверное, будут сохраняться несколько дольше. Или не дольше. Или в пределах погрешности, кто его знает.

Последний раз, как я понимаю, с этим экспериментировал t-rex, 21.03.2011, build 1924.
Возможно, за 8 лет SQLite оптимизировали (ну или железо догнало) и все эти приседания уже неактуальны.

Shmuel
Posts: 5646
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

Far 3 & SettingsControl

Post by Shmuel » Sat 15 Dec, 2018 19:26

DrKnS wrote:
Sat 15 Dec, 2018 19:14
зачем вам ускорять код, который всё равно не работает?
Мне не ускорять надо, и код у меня, как правило, работает (это в ответ на вопрос, зачем я держу у себя неработающий код) :)
Но есть такая штука, как экспериментирование с кодом, при котором возможны любые ситуации.

То, что сейчас принудительная эксклюзивность, мне не нравится. Предпочёл бы, например, добавление в API команд SCTL_BEGIN и SCTL_COMMIT (не обязательных для применения). Но да ладно, переживём.

User avatar
DrKnS
Posts: 5082
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 183 times

Far 3 & SettingsControl

Post by DrKnS » Sat 15 Dec, 2018 19:47

Shmuel wrote:
Sat 15 Dec, 2018 19:26
То, что сейчас принудительная эксклюзивность, мне не нравится. Предпочёл бы, например, добавление в API команд SCTL_BEGIN и SCTL_COMMIT.
Я так и хотел сделать для решения 0002940. Но zg, например, считает, что это слишком низкоуровнево.
Я не писал плагинов, использующих SettingsControl, поэтому настаивать не стал.

Shmuel
Posts: 5646
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

Far 3 & SettingsControl

Post by Shmuel » Sat 15 Dec, 2018 19:58

Не так давно сильно критиковалась функция far.FreeSettings(). А ведь, фактически, это единственный способ закрыть хэндлы, созданные, но не закрытые какими-то (да, кривыми) макросами. А иначе, доступ к Settings Control для всех прочих макросов будет перекрыт (в плохом варианте - вплоть до перезагрузки Фара).

User avatar
DrKnS
Posts: 5082
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 183 times

Far 3 & SettingsControl

Post by DrKnS » Sat 15 Dec, 2018 20:41

Shmuel wrote:
Sat 15 Dec, 2018 19:58
это единственный способ закрыть хэндлы
Это, всё же, слишком грубо и кто-то потом, с ненулевой вероятностью и неизвестными последствиями, обломается.
доступ к Settings Control для всех прочих макросов будет перекрыт
Если архитектурно все макросы живут в одном плагине - несомненно.

Shmuel
Posts: 5646
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 194 times

Far 3 & SettingsControl

Post by Shmuel » Sat 15 Dec, 2018 20:52

DrKnS wrote:
Sat 15 Dec, 2018 20:41
доступ к Settings Control для всех прочих макросов будет перекрыт
Если архитектурно все макросы живут в одном плагине - несомненно.
Но это всего лишь следствие искусственно навязанной эксклюзивности доступа к базе.
Что касается воображаемой (или неизвестно кем используемой) архитектуры, при которой макросы живут в разных плагинах, это представляет теоретический интерес. Практически я с этим не встречался.

Post Reply

Return to “Разработка плагинов”