Название: Рисование в отдельной нитке Отправлено: Igors от Июнь 28, 2021, 22:06 Добрый день
Продолжение соседней темы. Быстренько прикрыл рисование мутексом, заработало, неужели проскочил? Конечно нет, на машине заказчика рушится, причем мерзко. Ну ладно, прильнул к источнику знаний Цитировать Thread Affinity Мда, не густо! И примерчика передрать не наблюдаю. А это витиеватое "аffinity" не помогает, но наоборот, запутывает. Как понять что нужно делать для "выноса в поток" ? Нужно ли делать moveToThread ? Четких указаний не вижу, но наверно да, надо. Понял что имеется ввиду нечто типаQOpenGLContext can be moved to a different thread with moveToThread(). Do not call makeCurrent() from a different thread than the one to which the QOpenGLContext object belongs. A context can only be current in one thread and against one surface at a time, and a thread only has one context current at a time. Код Ну и вроде это с успехом может юзаться как из главной так и из другой, ясно под защитой мутекса (не 2 рисования вместе). Ну хорошо, пусть я чего-то рисую, напр в др нитке, главный цикл событий обрабатывается, вызывается paintGL в главной нитке, а до его вызова Qt сам сделает makeCгrrent - все, приплыли. Или я что-то не так понял? Какие есть соображения? Спасибо Название: Re: Рисование в отдельной нитке Отправлено: Igors от Июль 19, 2021, 06:45 Увы. "ни асилил". Да, рисование в рабочей нитке возможно, надо в ней установить контекст созданный в ней же, и рисовать. Если "не дышать" (остановить главную), то да, так работает. Но смысл именно освободить главную для UI/cобытий, и тут затык. Во-первых имею довольно много данных хранимых на видео (что удобно, слил в буфер и пользуйся), и как их (операции с ними) прикрывать - хз. Ну ладно, позатыкал очевидное, и на моей машине вроде заработало. Но на др крашит бурным потоком. Причем в самых неожиданных местах, напр главная падает в событийном цикле.
Возможно (ну это я так думаю), "обычные" окна/контролы тоже юзают OpenGL (а значит переключают контекст), тогда конечно хана. Эх, поговорить бы со знающим человеком, а тут дальше обсасывания функторов дело не идет :'( Название: Re: Рисование в отдельной нитке Отправлено: kambala от Июль 19, 2021, 10:45 задавание вопроса на международной площадке с гораздо бо́льшим количеством пользователей (stackoverflow, Qt forum) повышает вероятность ответа
Название: Re: Рисование в отдельной нитке Отправлено: Igors от Июль 19, 2021, 12:13 задавание вопроса на международной площадке с гораздо бо́льшим количеством пользователей (stackoverflow, Qt forum) повышает вероятность ответа Там еще хуже :'(Название: Re: Рисование в отдельной нитке Отправлено: Racheengel от Июль 20, 2021, 00:35 >> Но на др крашит бурным потоком. Причем в самых неожиданных местах, напр главная падает в событийном цикле.
Я бы память проверил. Какой-нибудь gflags там или valgrind, если линукс. А то очень похожие симптомы, что "где-то что-то куда-то вылазит" :) Название: Re: Рисование в отдельной нитке Отправлено: Igors от Июль 21, 2021, 07:55 Я бы память проверил. Какой-нибудь gflags там или valgrind, если линукс. А то очень похожие симптомы, что "где-то что-то куда-то вылазит" :) Чем универсальнее лекарство - тем реже оно помогает. |