Важная информация

User Tag List

Страница 6 из 267 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 2664

Тема: Xpeccy

  1. #51
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Сегодня опробовал иксовое окно с glx-содержимым + системный таймер. вроде ничего, но изредка почему-то затыкается - окно прорисовывается, а потом всё висит в ожидении эвента с сервера иксов. Исходник прилагается
    затыкается при некоторых действиях с окном. судя по всему, XNextEvent-у при обработке евентов, связанных с перерисовкой окна, не нравится, когда его прерывают сигналом, в обработчике которого что-то мутится с OpenGL... и его можно понять
    Последний раз редактировалось boo_boo; 02.04.2009 в 01:09.

  2. #52
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Дело спасло это:
    Код:
    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.
    Все любят гипножабу

  3. #53
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    "Window name\0"
    извините ламера, а зачем там \0?

  4. #54
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    извините ламера, а зачем там \0?
    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.
    Все любят гипножабу

  5. #55
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    window_name Specifies the window name, which should be a null-terminated string
    ну дык в С все строковые константы автоматически нулем заканчиваюцца
    Цитата Сообщение от SAM style Посмотреть сообщение
    Правда, иногда вылетает при сворачивании-разворачивании. Надо это дело контролировать.
    а если вместо традиционного цикла обрабатывать иксовые евенты в хендлере SIGALRM, после опенгэльной хни или перед ней?
    Последний раз редактировалось boo_boo; 02.04.2009 в 17:17.

  6. #56
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    При каждом соврачивании-разворачивании выскакивает
    Код:
    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]
    time left - это мой дебаг. выдаёт остаток таймера после прорисовки.
    Попробовал ловить UnmapNotify и не выводить содержимое, когда окна нет. От ошибки при разворачивании спасает, при сворачивании - нет. Найти бы эвент "щас хочу свернуться" (UnmapNotify начинает выдаваться уже после сворачивания)
    И ещё: как правильно всё закрывать? При закрытии окна вылезает
    Код:
    XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
          after 40 requests (40 known processed) with 0 events remaining.
    added
    Так да. Поставил выемку эвента в обработчик - ошибки сворачивания исчезли. Но при закрытии всё осталось. Если эвенты убрать вообще - нормально закрывается.
    added 2
    Как корректно убить автоповтор клавиш? XAutoRepeatOff убивает вообще глобально, к тому же продолжает действовать даже после закрытия проги.
    added 3
    И с автоповтором разобрался. Даже зум сделал вполне приемлемо. Только вот (0,0), оказывается, в левом нижнем углу...
    Последний раз редактировалось SAM style; 03.04.2009 в 14:45.
    Все любят гипножабу

  7. #57
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SAM style, а зачем вообще связываться с SIGALRM? можно ж:

    t1 = таймер
    в цикле {
    разгрести иксовые эвенты
    сэмулить фрейм
    t2 = таймер
    если (t2 - t1) > длины_фрейма то ждать (длина_фрейма - (t2 - t1))
    t1 = t1 + длина_фрейма
    вывести экран
    }

  8. #58
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Давно меня тут не было...
    Как запаузить прогу на энное кол-во микросекунд? Тупое do {clock2 = clock();} while ((clock2-clock1)<(CLOCKS_PER_SEC/50)); жрёт, ясно дело, дофигищи. Перехватывать закрытие окна я уже научился. Альтернативы системному таймеру пока не вижу.
    Все любят гипножабу

  9. #59
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    usleep, nanosleep - засыпание на микро- и наносекунды соотвецно.

  10. #60
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Промежуточное.
    Весь апрель занимался связкой X+glx. Почти получилось - эмуляция шла, всё рисовалось и даже пикалкой пикало. Дошел до того места, где надо интерфейс в окнах рисовать (напр, настройка) - загнулся. Скрещивать Qt с иксами не вышло(хотя идея есть), самому всё рисовать/располагать/контролировать не хочется.

    Обновилось:
    - главное окно на QGLWidget. Двойной размер уже не кушает столько, сколько прежде.
    - новая тикалка. На первый взгляд, тикает быстрее.

    Отвалилось:
    - сохранение скриншотов не в scr. renderPixmap чуть не повесил всё. Пока закомментировано.
    - разный размер бордюра. Ещё не придумалось, как присобачить его к новым реалиям.
    - лента. К новой тикалке пока не приделана.

    Планы:
    - переделать нафиг звук и ВГ93. Ибо вместе жрут в полтора раза больше самой эмуляции Z80. А звук, на удивление, теперь ещё и не работает.
    Последний раз редактировалось SAM style; 30.06.2009 в 18:13.
    Все любят гипножабу

Страница 6 из 267 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •