Последний раз редактировалось boo_boo; 02.04.2009 в 01:09.
Дело спасло это:Событие берётся только когда оно есть.Код:if (XPending(display)!=0) XNextEvent(display,&event);
Правда, иногда вылетает при сворачивании-разворачивании. Надо это дело контролировать.
Копаемся далее, в сторону окна фиксированного размера.
added
Если кому понадобитсяКод:XSizeHints winsize; winsize.flags = PMinSize|PMaxSize; winsize.min_width=448;winsize.min_height=320; winsize.max_width=448;winsize.max_height=320; XmbSetWMProperties(display,window,"Window name\0","\0",av,ac,&winsize,NULL,NULL);
Последний раз редактировалось SAM style; 02.04.2009 в 15:34.
Все любят гипножабу
http://tronche.com/gui/x/xlib/ICC/cl...roperties.html
window_name Specifies the window name, which should be a null-terminated string.
Хотя, я может это и не так понял. Без \0 то же самое получается.
Последний раз редактировалось SAM style; 02.04.2009 в 16:57.
Все любят гипножабу
При каждом соврачивании-разворачивании выскакивает
time left - это мой дебаг. выдаёт остаток таймера после прорисовки.Код:Locking assertion failure. Backtrace: #0 /usr/lib/libxcb-xlib.so.0 [0xb7aed767] #1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_lock+0x2e) [0xb7aed81e] #2 /usr/lib/libX11.so.6 [0xb7e3bde9] #3 /usr/lib/libX11.so.6(XSync+0x25) [0xb7e30115] #4 /usr/lib/libGL.so.1 [0xb7da33fa] time left: 0 time left: 9750 Locking assertion failure. Backtrace: #0 /usr/lib/libxcb-xlib.so.0 [0xb7aed767] #1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb7aed8b1] #2 /usr/lib/libX11.so.6 [0xb7e3bcf1] #3 /usr/lib/libX11.so.6(XPending+0x43) [0xb7e25403] #4 ./a.out(__gxx_personality_v0+0x513) [0x8048f8b] #5 /lib/i686/cmov/libc.so.6(__libc_start_main+0xe5) [0xb7b05455] #6 ./a.out(__gxx_personality_v0+0x59) [0x8048ad1]
Попробовал ловить UnmapNotify и не выводить содержимое, когда окна нет. От ошибки при разворачивании спасает, при сворачивании - нет. Найти бы эвент "щас хочу свернуться" (UnmapNotify начинает выдаваться уже после сворачивания)
И ещё: как правильно всё закрывать? При закрытии окна вылезаетaddedКод:XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" after 40 requests (40 known processed) with 0 events remaining.
Так да. Поставил выемку эвента в обработчик - ошибки сворачивания исчезли. Но при закрытии всё осталось. Если эвенты убрать вообще - нормально закрывается.
added 2
Как корректно убить автоповтор клавиш? XAutoRepeatOff убивает вообще глобально, к тому же продолжает действовать даже после закрытия проги.
added 3
И с автоповтором разобрался. Даже зум сделал вполне приемлемо. Только вот (0,0), оказывается, в левом нижнем углу...
Последний раз редактировалось SAM style; 03.04.2009 в 14:45.
Все любят гипножабу
SAM style, а зачем вообще связываться с SIGALRM? можно ж:
t1 = таймер
в цикле {
разгрести иксовые эвенты
сэмулить фрейм
t2 = таймер
если (t2 - t1) > длины_фрейма то ждать (длина_фрейма - (t2 - t1))
t1 = t1 + длина_фрейма
вывести экран
}
Давно меня тут не было...
Как запаузить прогу на энное кол-во микросекунд? Тупое do {clock2 = clock();} while ((clock2-clock1)<(CLOCKS_PER_SEC/50)); жрёт, ясно дело, дофигищи. Перехватывать закрытие окна я уже научился. Альтернативы системному таймеру пока не вижу.
Все любят гипножабу
usleep, nanosleep - засыпание на микро- и наносекунды соотвецно.
Промежуточное.
Весь апрель занимался связкой X+glx. Почти получилось - эмуляция шла, всё рисовалось и даже пикалкой пикало. Дошел до того места, где надо интерфейс в окнах рисовать (напр, настройка) - загнулся. Скрещивать Qt с иксами не вышло(хотя идея есть), самому всё рисовать/располагать/контролировать не хочется.
Обновилось:
- главное окно на QGLWidget. Двойной размер уже не кушает столько, сколько прежде.
- новая тикалка. На первый взгляд, тикает быстрее.
Отвалилось:
- сохранение скриншотов не в scr. renderPixmap чуть не повесил всё. Пока закомментировано.
- разный размер бордюра. Ещё не придумалось, как присобачить его к новым реалиям.
- лента. К новой тикалке пока не приделана.
Планы:
- переделать нафиг звук и ВГ93. Ибо вместе жрут в полтора раза больше самой эмуляции Z80. А звук, на удивление, теперь ещё и не работает.
Последний раз редактировалось SAM style; 30.06.2009 в 18:13.
Все любят гипножабу
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)