LINUX.ORG.RU

Сообщения question4

 

Новые ограничения на редактирование стартового поста?

Форум — Linux-org-ru

Узнал кое-какие детали по вопросу, который задавал на форуме в апреле. Хотел добавить информацию в стартовый пост и не обнаружил ссылку на редактирование. Как за 4 года изменилась работа со startx и ~/.xinitrc? Какое сейчас сделали ограничение по времени?

 

question4
()

Неожиданная проблема КОИ-7

Форум — Talks

https://youtu.be/dKf35M_-G7k?t=1416

В советском портативном компьютере МК-90, как оказалось, использовали кодировку КОИ-7 и переключались между русской и английской кодовыми таблицами, посылая спецсимвол для смены языка. Это приводило к забавному багу, когда русские кавычки в программе переключали на русский шрифт всю ОС.

 ,

question4
()

Неожиданная фича

Форум — Talks

Только что обнаружил, что если в Konsole навести курсор мыши на английское слово, обозначающее цвет, покажет большой квадрат этого цвета. Регистр значения не имеет. Если слово не влазит в строку и переносится, то тоже опознаётся. Из сотен цветов на https://en.wikipedia.org/wiki/List_of_colors_(compact) поддерживаются всего 54 — только в 1 слово, и то не все:

Aqua Aquamarine Azure Beige Bisque Black Blue Brown Burlywood Chartreuse Chocolate Coral Cornsilk Crimson Cyan Firebrick Fuchsia Gainsboro Gold Goldenrod Gray Green Honeydew Indigo Ivory Khaki Lavender Lime Linen Magenta Maroon Moccasin Olive Orange Orchid Peru Pink Plum Purple Red Salmon Seashell Sienna Silver Snow Tan Teal Thistle Tomato Turquoise Violet Wheat White Yellow

Поискав в сети, узнал, что это работает и в Yakuake. Кроме того, работает для 16-ричных обозначений цветов вида #123456.

P.S. Написание «Grey» тоже поддерживается. Итого 55.

P.P.S. KivApple подсказывает, что цвета взяты из стандарта CSS. Итого 147 слов (1 не поддерживается) для 138 цветов (7 — варианты написания gray-grey, плюс синонимы aqua-cyan, fuchsia-magenta):

AliceBlue AntiqueWhite Aqua Aquamarine Azure Beige Bisque Black BlanchedAlmond Blue BlueViolet Brown BurlyWood CadetBlue Chartreuse Chocolate Coral CornflowerBlue Cornsilk Crimson Cyan DarkBlue DarkCyan DarkGoldenRod DarkGray DarkGrey DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkSlateGrey DarkTurquoise DarkViolet DeepPink DeepSkyBlue DimGray DimGrey DodgerBlue FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold GoldenRod Gray Grey Green GreenYellow HoneyDew HotPink IndianRed Indigo Ivory Khaki Lavender LavenderBlush LawnGreen LemonChiffon LightBlue LightCoral LightCyan LightGoldenRodYellow LightGray LightGrey LightGreen LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSlateGrey LightSteelBlue LightYellow Lime LimeGreen Linen Magenta Maroon MediumAquaMarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed MidnightBlue MintCream MistyRose Moccasin NavajoWhite Navy OldLace Olive OliveDrab Orange OrangeRed Orchid PaleGoldenRod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip PeachPuff Peru Pink Plum PowderBlue Purple Red RosyBrown RoyalBlue SaddleBrown Salmon SandyBrown SeaGreen SeaShell Sienna Silver SkyBlue SlateBlue SlateGray SlateGrey Snow SpringGreen SteelBlue Tan Teal Thistle Tomato Turquoise Violet Wheat White WhiteSmoke Yellow YellowGreen

 , , ,

question4
()

Порт Lotus 1-2-3 под Linux

Новости — Проприетарное ПО
Группа Проприетарное ПО

Тэвис Орманди (Tavis Ormandy) выпустил бинарный патч, который модифицирует Lotus 1-2-3 для ОС UNIX System V 386, обеспечивая его работу под современным линуксом.

Началось всё с того, что Орманди из любопытства изучал дистрибутив Lotus 1-2-3 (предположительно 1990 года) под коммерческий юникс и обнаружил, необычный способ линковки исполняемого файла в формате COFF — partial linking. Как ему объяснили, такой способ позволял при желании слинковать исполняемый файл с плагинами, которые нельзя было подключить иначе, если в ОС не было dlopen().

В итоге Орманди смог написать утилиты для правки системных вызовов Unix и обёртку для их замены на вызовы Linux и слинковать всё в 32-битный ELF. Одной из крупных проблем оказалась адаптация termios. Интересно, что на старых версиях Линукса, с поддержкой callgate и lcall7/lcall27 такая адаптация прошла бы легче.

Ещё одной из проблем оказалась защита от копирования. Орманди считает себя вправе изготовить файл-ключ, обеспечивающий работу программы, так как он владеет легальной копией Lotus 1-2-3 под MS-DOS. Для остальных он приводит скриншот дизассемблера IDA и расплывчатые рекомендации, как делать такой файл. Программа не продаётся уже почти 20 лет. Да и легальных владельцев Lotus 1-2-3 в мире немало.

Тэвис Орманди — специалист по безопасности («white hat») из Гугла и энтузиаст Lotus 1-2-3. Ранее написал драйвер для MS-DOS версии Lotus, обеспечивающий её работу в окне терминала DOSEMU2 произвольного размера.

Lotus 1-2-3 — одна из первых программ электронных таблиц, отличавшаяся от конкурентов скоростью, надёжностью и удобством. Её нередко называют одной из причин коммерческого успеха платформы IBM PC в 1980-х. Поддержка Lotus долго была критерием совместимости для клонов. В 1990-х Lotus проиграла MS Excel-ю, так как GUI-версия появилась слишком поздно, и в 1995 году компанию купила IBM.

Новость на Opennet

Исходные тексты патча и утилит с инструкцией

>>> Подробное объяснение

 , ,

question4
()

MS Teams падает при входящих звонках

Форум — Multimedia

Включаю «Make a test call», начинается сигнал входящего звонка от Echo, и через долю секунды программа перезапускается, даже не успеваю нажать кнопку ответа на звонок. При запуске из консоли ничего не пишет, в dmesg иногда появляется строка traps: teams[23357] general protection fault ip:7f2a5aad5da4 sp:7f2a818e9298 error:0 in slimcore.node[7f2a581b1000+3357000] (адреса варьируются). Аналогично при подключениях к групповым митингам. Gentoo, ALSA, net-im/teams-1.5.00.10453, USE=«-swiftshader -system-ffmpeg».

Решаемо? Куда копать?

 ,

question4
()

Ubuntu 22.04

Форум — Talks

В нормальных дистрибутивах есть фича, что после 5 минут неактивности лочит скрин и запрашивает пароль.

В Ubuntu 22.04 лочит и запрашивает пароль каждые 5 минут вне зависимости от активности пользователя.

А, нет. Это DE падает. Каждые 5 минут. С закрытием всех программ.

По крайней мере, в VirtualBox.

P.S. Как выяснилось, по умолчанию VirtualBox выделяет на 64-битную Убунту 1 гигабайт памяти. Поднял память до 4, и уже полчаса ни единого перезапуска.

 ,

question4
()

Necessary secrets for the VPN connection 'SSTP1' were not provided.

Форум — General

Пытаюсь подключиться к рабочему VPN по SSTP, используя NetworkManager. Раньше успешно подключался в Ubuntu 18.04 по этой инструкции: https://wiki.it-kb.ru/unix-linux/ubuntu/ubuntu-16-04-xenial-xerus-lts/how-to-setup-vpn-sstp-client-and-network-manager-on-ubuntu-desktop-linux-16-04-xenial-xerus-lts Теперь нужно подключить Gentoo с KDE. NetworkManager запущен, нужные модули в System Settings > Network > Connections появились. systemd отсутствует.

Пока удалось добиться, чтобы sstpc прекратил сегфолтиться. Теперь в GUI стала выскакивать ошибка «Necessary secrets for the VPN connection ‘SSTP1’ were not provided.» Чего ему не хватает?

 , , ,

question4
()

TeamViewer-ом кто-нибудь ещё пользуется?

Форум — Talks

Новые лицензии не продаются, старые будут работать, пока не кончатся, но главное: все бесплатные лицензии отозваны. https://www.teamviewer.com/en/company/press/

Кто-нибудь им ещё пользуется?

 

question4
()

meson не находит пакеты

Форум — Development

При установке пакетов под Gentoo meson не находит требуемые зависимости:

Для net-misc/networkmanager не находит libudev.
Для dev-libs/libgusb не находит gio-2.0.

В обоих случаях pkgconfig их находит.

В чём дело? Как исправить?

Ответ: при миграции на профиль 17.1 часть пакетов (253 из ~750) не обновились. Смутно припоминаю, что сборка прервалась с ошибкой, после чего emerge -1vp /lib32 /usr/lib32 ничего не нашёл (или я потерял эту информацию среди длинных простыней сообщений о других ошибках). Как я понял, из-за этого часть файлов искалась не там. Сейчас emerge пакеты нашёл и пересобрал, и meson заработал.

 ,

question4
()

В настройках BIOS не видно жёсткий диск

Форум — Linux-hardware

На компьютере 2 жёстких диска, новый (с рабочей системой) и старый битый:

(parted) print all                                                        
Model: ATA TOSHIBA HDWE160 (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  5934GB  5934GB  ext4
 2      5934GB  6001GB  67.0GB  linux-swap(v1)        swap
 3      6001GB  6001GB  2097kB                        bios_grub


Model: ATA WDC WD40EFRX-68W (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  3947GB  3947GB                  root
 2      3947GB  4001GB  53.7GB  linux-swap(v1)  swap  swap
 3      4001GB  4001GB  2956kB                        bios_grub

(Отсутствие файловой системы на /dev/sdb1 — не ошибка, так и есть.)

Когда захожу в настройки BIOS и выбираю диск для загрузки, предлагает WDC, флешки, LAN, но только не TOSHIBA, и загрузиться с него невозможно. Когда гружусь, зажав F8, из Boot Menu нормально видно TOSHIBA, и загрузиться можно.

В чём проблема? Не хватает каких-то флагов? Что сделать, чтобы грузилось с sda без моего участия?

 ,

question4
()

Firefox предлагает включить DRM. Как убрать баннер?

Форум — Desktop

Захожу на Яндекс-маркет, и на каждой новой странице выскакивает предложение разрешить проигрывать DRM. Надоел уже хуже подписки на push-уведомления.

Насколько я могу судить, этот баннер — не часть веб-страницы, а часть интерфейса Фаерфокса. Если верить найденной документации (2016 года), отключение DRM в настройках должно заблокировать его раз и навсегда. (Собственно, я так сразу и сделал, когда эта настройка появилась много лет назад.) Баннер у меня стал появляться совсем недавно — после последнего апдейта. Как отключить его насовсем?

Gentoo, AMD64, www-client/firefox-91.8.0:esr.

 , ,

question4
()

Как за 4 года изменилась работа со startx и ~/.xinitrc?

Форум — Desktop

Включил компьютер после 4-летнего перерыва, обновил мир, – теперь иксы не стартуют по команде startx. Выдают в консоль ошибку:

parse_vt_settings: Cannot open /dev/tty0 (Permission denied)

Помимо неё ошибки в ~/.local/share/xorg/Xorg.0.log:

(EE) dbus-core: error connecting to system bus: org.freedesktop.DBus.Error.FileNotFound (Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory)

Когда включаю dbus, появляется

(EE) systemd-logind: failed to get session: PID 19851 does not belong to any known session

В чём проблема? Как запустить иксы? Помимо из-под рута или с SUID.

Ответы:
Проблема в смене conslolekit2 на elogind.
Для запуска иксов с OpenRC необходимо добавить elogind в boot. А уже elogind запустит dbus.

Но это пока не всё. Теперь выдаёт ошибку startkde not found.

Решение:
Рекомендуется заменить exec startkde на exec dbus-launch --exit-with-session startplasma-x11. Говорят, exec startplasma-x11 тоже годится.

Сам файл startplasma-x11 ставится из kde-plasma/plasma-workspace. Если ставить kde-plasma/plasma-meta, он поставит plasma-workspace.

 ,

question4
()

Сколько стоит ноутбук?

Форум — Talks

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

Ноутбук Toshiba Satellite C850-D9K https://market.yandex.ru/product--15-6-noutbuk-toshiba-satellite-c850-d9k-1366x768-intel-pentium-2-4-ggts-ram-4-gb-hdd-500-gb-radeon-hd-7610m-windows-8-64/8503842?cpa=1
Экран 15.6" (1366x768)
Процессор Pentium B980 (2x2.40 ГГц)
RAM 4 ГБ (1333 МГц)
HDD 500 ГБ
Видеокарта AMD Radeon HD 7610M 1 ГБ

# lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)
00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation HM70 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Whistler LE [Radeon HD 6610M/7610M]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Turks HDMI Audio [Radeon HD 6500/6600 / 6700M Series]
08:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8723AE PCIe Wireless Network Adapter
09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 05)
# lsusb
Bus 002 Device 003: ID 0930:021d Toshiba Corp. RT Bluetooth Radio
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 04f2:b307 Chicony Electronics Co., Ltd TOSHIBA Web Camera - HD
Bus 001 Device 003: ID 0bda:0138 Realtek Semiconductor Corp. RTS5138 Card Reader Controller
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
# lscpu
Architecture:           x86_64
  CPU op-mode(s):       32-bit, 64-bit
  Address sizes:        36 bits physical, 48 bits virtual
  Byte Order:           Little Endian
CPU(s):                 2
  On-line CPU(s) list:  0,1
Vendor ID:              GenuineIntel
  Model name:           Intel(R) Pentium(R) CPU B980 @ 2.40GHz
    CPU family:         6
    Model:              42
    Thread(s) per core: 1
    Core(s) per socket: 2
    Socket(s):          1
    Stepping:           7
    CPU max MHz:        2400.0000
    CPU min MHz:        800.0000
    BogoMIPS:           4789.22
    Flags:              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht
                         tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid ape
                        rfmperf pni pclmulqdq dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc
                        _deadline_timer xsave lahf_lm epb pti xsaveopt dtherm arat pln pts
Caches (sum of all):    
  L1d:                  64 KiB (2 instances)
  L1i:                  64 KiB (2 instances)
  L2:                   512 KiB (2 instances)
  L3:                   2 MiB (1 instance)
NUMA:                   
  NUMA node(s):         1
  NUMA node0 CPU(s):    0,1
Vulnerabilities:        
  Itlb multihit:        KVM: Mitigation: VMX unsupported
  L1tf:                 Mitigation; PTE Inversion
  Mds:                  Vulnerable: Clear CPU buffers attempted, no microcode; SMT disabled
  Meltdown:             Mitigation; PTI
  Spec store bypass:    Vulnerable
  Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:           Mitigation; Full generic retpoline, STIBP disabled, RSB filling
  Srbds:                Not affected
  Tsx async abort:      Not affected

Машина использовалась 6 лет, но в хорошем состоянии. Клавиатура нуждается в чистке, DVD склонен самопроизвольно открываться, аккумулятор требует замены.

Вопросов два: сколько за него можно получить, и насколько хорошо на этом оборудовании будет работать линукс? Из запчастей имеются 2 модуля памяти по 4 гигабайта.

 ,

question4
()

Dr.Web под линукс

Галерея — Рабочие места

Решил тряхнуть стариной и занялся чисткой чужого ноутбука от вирусов. С официальной линуксовой флешки на базе Ubuntu 16.04 с MATE. Давно не занимался загрузочными флешками и был приятно удивлён, что EFI всё подхватил без всяких бут-секторов.

На ноуте обнаружилось около 380 экземпляров этого самого Adware.Zaxar разных версий. Неудивительно, что машина грузилась по полчаса, если был доступен интернет.

Десктоп — 8-летний Phenom II с Gentoo, не обновлявшейся года 4. Когда гавкнулся мой рабочий ноут, пришлось вернуться на него. Флешку записывал на нём.

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

 

question4
()

Проблема с emerge --sync

Форум — General

Есть машина с Gentoo, которая ОЧЕНЬ давно не обновлялась. При попытке скачать обновления получаю ошибку:

$ sudo emerge --sync
Пароль: 
>>> Syncing repository 'gentoo' into '/usr/portage'...
 * Using keys from /usr/share/openpgp-keys/gentoo-release.asc
 * Refreshing keys from keyserver ...OpenPGP keyring refresh failed:
gpg: refreshing 4 keys from hkps://hkps.pool.sks-keyservers.net
gpg: keyserver refresh failed: Server indicated a failure

Рекомендации 2019 года – https://forums.gentoo.org/viewtopic-p-8358476.html – не помогают, там другая ошибка.

В чём может быть дело?

Итог:

Достаточно легко удалось проапдейтить gcc, python, portage, system и кое-что ещё, удаляя /usr/portage/ и распаковывая туда снапшоты squashfs от 20180701, 20190801, 20200801 и 20210801. При этом ряд программ пришлось маскировать и в итоге снести, так как их не осталось ни на зеркалах, ни в апстриме. Особенно подвержены этому оказались Дженту-специфичные утилиты.

Проапдейтив system, gcc, python и частично KDE до августа 2021-го года, решился синхронизироваться и пересобрать мир. На разруливание конфликтов ушла неделя вечеров. Часть пакетов пришлось снести, чтобы не мешали, но почти всё шло гладко, пока не ушла в своп сборка Chromium-а 100 — 16 гигабайт оказалось мало. После ресета отказались грузиться иксы. Хромиум тоже снёс, а сборку мира, emerge @preserved-rebuild и обновление ядра завершил без иксов.

С X.org оказалось, что надо запускать elogind и dbus, а вместо startkde вызывать startplasma-x11, желательно через dbus. startplasma-x11 ставится с kde-plasma/plasma-workspace

В итоге получилась система, в которой от старой почти ничего не осталось, кроме make.conf, примерно 3/4 portage.use и /home. Оверлеи ещё не подключал.

Стоило ли сразу ставить с нуля по хендбуку? Не знаю.

А сам ключ нашёлся в пакетах app-crypt/openpgp-keys-gentoo-release и sec-keys/openpgp-keys-gentoo-release.

 ,

question4
()

Как покрасивее взять колонки в структурированном массиве numpy?

Форум — Development

Из файла memmap-ится массив 28-байтных record-ов:

xy = np.dtype([('x', '<i2'), ('y', '<i2')])
rect = np.dtype([('bl', xy), ('y', xy)])
record = np.dtype([('a', xy), ('b', xy), ('l', rect), ('r', rect), ('c', xy)])

Чтобы применить к колонкам ‘a’ и ‘b’ сложение и умножение, нужно сделать их неструктурированными. Для одной колонки достаточно self.data['a'].view(('<i2', 2)) Но для пары колонок, даже последовательных, self.data[['a','b']].view(('<i2', 4)) выдаст ошибку, так как view() применится ко всему массиву, поэтому принимается только 14 вместо 4. self.data.view(('<i2', 14))[:, :4] выдаст желаемый результат, но не наглядно. np.lib.recfunctions.structured_to_unstructured(self.data[['a', 'b']]).view('<i2').reshape((len(self.data), 4)) громоздко.

Какие ещё есть способы? И почему в последнем случае не работает view(('<i2', 4)), приходится выносить reshape отдельно?

 ,

question4
()

Чем заменить Gmail?

Форум — Talks

Вопрос к пользователям Гмейла. Если забанят Гугл, на какую почту перейдёте?

 , ,

question4
()

Неправильное поведение sdl2.SDL_RenderDrawPoints ?

Форум — Development

scaledT — Numpy-массив 2-мерных координат, размер 143x2. Можно отрисовывать каждую пару вызовом sdl2.SDL_RenderDrawPoint, можно нарисовать сразу весь массив командой
sdl2.SDL_RenderDrawPoints(renderer, self.scaledT.ctypes.data_as(ctypes.POINTER(sdl2.SDL_Point)), len(self.scaledT))

Но первое работает одинаково и под Линуксом, и под Виндоуз, а второе под Линуксом даёт неверный результат — все точки рисуются на строке с y=0.

В чём может быть проблема?

 ,

question4
()

Points из numpy.array

Форум — Development

Как делать массивы numpy понятными другим библиотекам?

Пример. Есть функция https://wiki.libsdl.org/SDL_RenderDrawPoints:
int SDL_RenderDrawPoints( SDL_Renderer * renderer, const SDL_Point * points, int count )
где SDL_Point — структура из 2 целых: https://wiki.libsdl.org/SDL_Point:
typedef struct SDL_Point { int x; int y; } SDL_Point;
Разумеется, всё это обёрнуто в Питон, то есть sdl2.SDL_RenderDrawPoints() и sdl2.SDL_Point().

Если просто вызывать SDL_RenderDrawPoints, ставя вторым аргументом numpy.array целых чисел, конечно, будет ошибка о неправильном типе: «ctypes.ArgumentError: argument 2: <class ‘TypeError’>: expected LP_SDL_Point instance instead of numpy.ndarray». Я пробовал экспериментировать с numpy.array.ctypes.data_as(), но не нашёл подходящий тип. Она хочет именно LP_SDL_Point.

Как показать ей, что массив является набором структур SDL_Points? В SDL имеются преобразования массивов точек в массивы numpy, но обратного преобразования я не нашёл.

 , , , ,

question4
()

Как закрыть все окна SDL?

Форум — Development

Экспериментирую с вызовами SDL из интерактивного интерпретатора Питона. Иногда случайно создаю окна, для которых не сохраняется переменная. Например, вызовом sdl2.SDL_CreateWindow(b'', 0, 0, 100, 100, 0)

Как закрыть все такие окна? Помимо перезапуска интерпретатора.

Ответ 1: помогла sdl2.SDL_VideoQuit()

Ответ 2: sdl2.SDL_DestroyWindow(sdl2.SDL_GL_GetCurrentWindow()) тоже работает.

 , ,

question4
()

RSS подписка на новые темы