| Summary: | Switch to Qt6 | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Ivan A. Melnikov <iv> |
| Component: | OpenBoard | Assignee: | neurofreak <neurofreak> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | enhancement | ||
| Priority: | P5 | CC: | antohami, iv, neurofreak, rider, zerg |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
|
Description
Ivan A. Melnikov
2025-08-27 14:32:41 MSK
(Ответ для Ivan A. Melnikov на комментарий #0) > Апстрим рекомендует Qt6 начиная с 1.7.3[1]. Предлагаю подумать о переходе. > > [1]https://git.altlinux.org/gears/O/OpenBoard.git?a=blob;f=README.md; > h=cd8563ef982996c01571fc32f05f882550e95fad#l29 Я уже пробовал. Пара патчей отваливается. Их нужно переписывать. > Пара патчей отваливается Отваливается (точнее, мешает сборке) только 0006-polygon_line_styles.patch, из-за использования QStringRef. Его несложно допинать, на моей машине собралось такое: https://git.altlinux.org/tasks/393374 Но вообще в этом патче странный код, неплохо бы посмотреть на него внимательнее. Не понятно, что делает метод convertLineToPolygon. QPolygonF собирается в строку, а потом разбирается обратно в QPolygonF, при этом на первый взгляд он от этого не должен поменяется, только памяти немного утекает. Что произойдёт, если заменить эту функцию на однострочник `return pLine;`? Как это увидеть? > https://git.altlinux.org/tasks/393374
Внезапно, i586 уже лишилось qt6-webengine, похоже из-за проблем node. qt5-webengine там кстати тоже в FTBFS.
(Ответ для Ivan A. Melnikov на комментарий #3) > > https://git.altlinux.org/tasks/393374 > > Внезапно, i586 уже лишилось qt6-webengine, похоже из-за проблем node. > qt5-webengine там кстати тоже в FTBFS. Под i586 можно не собирать. Не проблема. Во-певрых, я вчера накосячил при переносе 0006-polygon_line_styles.patch, сегодня очевидная ошибка исправлена. Во-вторых, эффект от convertLineToPolygon увидеть несложно: нужно нарисовать несколько пунктирных линий, а потом пробовать их стирать стёркой. Если convertLineToPolygon просто вернёт свой аргумент, то при работе стёрки иногда будут пропадать сегменты, расположенные вне области действия (возможно даже где-то очень далеко). Как convertLineToPolygon решает эту проблему неясно, но очевидно, что происходит какая-то магия. Более того, при сборке с qt6 эта магия слегка подразваливается -- при определённом упорстве можно воспроизвести проблему, но не так легко и заметно, как было бы без convertLineToPolygon. Природа этой магии не очевидна. По всей видимости, превращения float'ов в строчки и обратно как-то очень удачно их округляют. Попытки понять, как именно, и как-то воспроизвести эту магию более простыми действиями достаточно результата пока не дали, хотя обычное округление координат до 3-4 десятичных знаков делает проблему заметно реже воспоизводящейся. (In reply to Ivan A. Melnikov from comment #5) > Природа этой магии не очевидна. И понять её мне так и не удалось. К тому же, она начинает подводить при сборке с Qt6. Вместо оживления магии можно попробовать сделать что-то более понятное. Суть проблемы в том, что стёрка вычетает один QPainterPath из другого, и алгоритм этого вычетания не справляется с полигонами, состоящими из нескольких не связанных друг с другом частей. Соответственно идея в том, чтобы не ставить перед ним таких сложных задач -- например, обрабатывать все чёрточки пунктироной линии по одной. Однако сильно вмешиваться в код, апстрим которого не хочет принимать такие сложные изменения[1] наверное не стóит, так что была изобретена небольшая хитрость. Линии как и раньше добавляются в сцену целиком, и разделяются на цельные куски непосредственно при применении к ним стёрки. На моей машине работает хорошо: https://git.altlinux.org/tasks/393758/ [1]https://github.com/OpenBoard-org/OpenBoard/pull/714#issuecomment-1533112260 Спасибо за патчи. Отправил в Сизиф. (Ответ для Ivan A. Melnikov на комментарий #3) > Внезапно, i586 уже лишилось qt6-webengine, похоже из-за проблем node. Нет. Из-за прекращения поддержки в Blink. Патч для возвращения, кажется, ещё где-то есть, на я решил изначально не делать в Qt6, чтоб потом не мучиться с выпиливанием. (Ответ для Ivan A. Melnikov на комментарий #3) > похоже из-за проблем node. Эта решена #56065 |