ФлеймФорумПрограммирование

Летопись багов (47 стр)

Страницы: 146 47 48 49 50 Следующая »
#690
20:56, 25 июля 2024

entryway
> Та да. SDL даже не импортирует ShowCursor для своего SDL_ShowCursor. Просто ставит прозрачный.
чем меньше зависимостей от api операционки тем лучше, так что всё правильно делают.

#691
21:00, 25 июля 2024

entryway
> Просто ставит прозрачный.
SDL кроссплатформенный и это наверняка сделано как общее решение. На линуксовом X11/Xlib например нет никакого ShowCursor().

#692
21:03, 25 июля 2024

Надо =A=L=X= кастануть, он спец по проблематике говноAPI.

#693
1:25, 26 июля 2024

entryway
> Да и название функции не отражает того, что она делает
вангую, что когда-то она задумывалась как глобальная (вкл/выкл), но потом внезапно где-то огребли и сделали реф-каунтингом.

entryway
> Тебе такое поведение пригодилось хоть раз?
конкретно прятать курсор нет... ну или что-то когда-то было, что я уже не помню. (3д шутеры, я не часто пишу)
Но вот определять поведение по реф каунтингу - да!
Периодически, и связаное с UI поведением, приходится применять.

Самый свежий пример. в игре есть верхнее меню (котороя всякие статы показывает ну и т.п.)
И пользователь может руками (или автоматом по таймауту), отключать это меню.
А ещё в отключение и включение меню может скриптоваться. (например, скрыть на момент какой-нить катсцены в игре)

И в итоге, к этому отключению приматывается рефкаунтинг. Ну т.е. если человек выключил панельку ещё до катсцены.
То даже несмотря на то, что в скрипте по окончанию ката написано "включить меню обратно", визуально оно не покажется, ну потому что игрок раньше пожелал его отключить.

Но случаи такого рефкаунтинга редки, в большинстве случаев связаны с UI, но конечные пользователи страдают, если не реализовано нормально.

#694
(Правка: 12:11) 11:19, 26 июля 2024

Вбил в гугл "raymond chen showcursor" и вот:

What was the ShowCursor function intended to be used for?

https://devblogs.microsoft.com/oldnewthing/20091217-00/?p=15643

Оказывается, ShowCursor придумали для систем без мыши. Вот так вот.

При длительных операциях на системах без мыши всё равно хотелось показывать курсор с часиками, а всё остальное время прятать, чтобы он не висел в центре экрана. На системах с мышью счетчик инициализируется нулем, а без мыши - минус единицей. В результате код ниже в обоих случаях работает правильно - в системах без мыши показывает курсор и прячет, а в системах с мышью ничего не изменяется, курсор всегда виден.

hcurPrev = SetCursor(LoadCursor(NULL, IDC_WAIT));
ShowCursor(TRUE); // force cursor shown on mouseless systems
// ... perform long operation ...
ShowCursor(FALSE); // re-hide cursor on mouseless systems
SetCursor(hcurPrev);

Получается, на системах с мышью ShowCursor в принципе не предназаначен для скрытия курсора, по сути это просто заглушка.

#695
15:51, 26 июля 2024

entryway
> При длительных операциях на системах без мыши всё равно хотелось показывать курсор с часиками, а всё остальное время прятать, чтобы он не висел в центре экрана. На системах с мышью счетчик инициализируется нулем, а без мыши - минус единицей.
Ох. Не костыль, а костылище!

#696
16:34, 26 июля 2024

entryway
т.е курсор показывается, когда счетчик >=0 ?

> на системах с мышью ShowCursor
А в шутере как скрывать? Или присваивать прозрачный?

#697
12:08, 23 сен 2024

Кэш шейдеров на NV решил глюкануть - повисает компиляция рейтрейс шейдера и стоппорится драйвер в других потоках, при повторном запуске тоже самое, но если чуть поменять шейдер, то все норм, а потом поменять обратно и снова все норм. То есть один и тот же код в зависимости от запуска может повесить драйвер, если криво закэшировался.

#698
14:06, 1 дек 2024

Решил сделать отдельную прошивку для Arduino Uno которая бы программировала Bluetooth-свистки HC-06 на заданные скорость обмена и имя блютуф-устройства.
И сделал вот такую вот прикольную глупую глупость:

const int speeds[] = {
  0,
  1200, // 1
  2400, // 2
  4800, // 3
  9600, // 4
  19200,  // 5
  38400,  // 6
  57600,  // 7
  115200, // 8
};

Номер в комментарии это номер для AT-команды "AT+BAUDx" которая засылается в свисток для выставления скорости.
Нулевой слот просто для привычного описания массива, он никогда не задействуется.
Но боже мой, какая же глупость в коде выше!
Когда понял - прям почувствовал себя говнокодером...

#699
14:43, 1 дек 2024

/A\
> Кэш шейдеров на NV решил глюкануть
Очевидно, что драйвер не thread safe.

#700
15:57, 1 дек 2024

=A=L=X=
> Но боже мой, какая же глупость в коде выше!
запятая?

#701
20:20, 1 дек 2024

Aroch
> запятая?
После 38400 должно быть 76800, а не 57600.

#702
20:24, 1 дек 2024

iw4nna.rock
> После 38400 должно быть 76800, а не 57600.
кому должно? Если ему нужно банальное удвоение то битовым сдвигом это решается без всяких таблиц.

#703
20:27, 1 дек 2024

Aroch
> битовым сдвигом это решается без всяких таблиц
Кому нужен битовый сдвиг, когда нужен массив?

#704
20:29, 1 дек 2024

iw4nna.rock
> Кому нужен битовый сдвиг, когда нужен массив?
чтобы что?

Страницы: 146 47 48 49 50 Следующая »
ФлеймФорумПрограммирование