Фоновая картинка.

Kernel-side graphics support
  • Да-да. Здравствуй милый сердцу Проводник. :mrgreen:
  • Не так плоха была идея, как реализация, особенно в первых версиях всем знакомой ОС. Есть идеи лучше я не против, лишь понравилось как Серж расписал.
    Из хаоса в космос
  • В режиме 640*480 24 на qemu обнаружил вот такое (см. рисунок). Не уверен что виновата именно фоновая картинка. Ядро последнее версии 2477.
    Attachments
    gl_12_03_19.png
    gl_12_03_19.png (62.69 KiB)
    Viewed 7096 times
  • Что прямо так само появилось? Скачал чистый образ 2477, закинул в директорию Qemu и запустил выбрав режим 640*480 24? И совершенно ничего дополнительного не делал?
  • Mario, баг подтверждаю :(
    Использую стандартный VGA BIOS из поставки Qemu, с биосом VMWare такого нет. С тем же БИОС и большими разрешениями проблем не отмечаю.
  • Баг проявляется с победоносной ревизии #2447.
  • Хм... у меня прописано:
    -vga vmware
    Qemu старый версии 0.12.2 будут пытаться воспроизвести.
  • подтверждаю наличие бага на всех версиях qemu с 0.14, в том числе на сегодняшней сборке из гита
  • Да, воспроизвел я уже. Сейчас буду, методом исключения, выяснять чему в стандартном Qemu помешала замечательная ревизия 2446.
  • Нашел:
    Spoiler:
    Qemu_bug_1.png
    Qemu_bug_1.png (26.58 KiB)
    Viewed 7062 times
    Мне сразу вспомнилось:
    Spoiler:
    mayya_2012.jpg
    mayya_2012.jpg (99.86 KiB)
    Viewed 7062 times
  • Исправлено в SVN r. 2480
  • art_zh wrote:Mario
    А пошто токмо -1 ?
    Есть еще функции свертки и перемещеня окна, там тоже фон перерисовывать надо.
    Кстати, следует признать - я ошибался. Ядро таки восстанавливает не весь фон, а только тот кусок который нужно.
    Вот этот кусок тому подтвержение:
    Spoiler:

    Code: Select all

    no_set_bgr_event:
            cmp     byte[REDRAW_BACKGROUND], 0         ; background update ?
            jz      nobackgr
            cmp     [background_defined], 0
            jz      nobackgr
    ;    mov   [draw_data+32 + RECT.left],dword 0
    ;    mov   [draw_data+32 + RECT.top],dword 0
    ;    mov   eax,[Screen_Max_X]
    ;    mov   ebx,[Screen_Max_Y]
    ;    mov   [draw_data+32 + RECT.right],eax
    ;    mov   [draw_data+32 + RECT.bottom],ebx
    @@:
            call    drawbackground
            xor     eax, eax
            xchg    al, [REDRAW_BACKGROUND]
            test    al, al                             ; got new update request?
            jnz     @b
            mov     [draw_data+32 + RECT.left], eax
            mov     [draw_data+32 + RECT.top], eax
            mov     [draw_data+32 + RECT.right], eax
            mov     [draw_data+32 + RECT.bottom], eax
            mov     [MOUSE_BACKGROUND], byte 0
    
    nobackgr:
    Теперь нужно придумать как после того как я поменяю событие 5, сообщить приложению какой кусок изменился. Чтобы к примеру в Icon отрисовывать не все иконки, а только затертые при перерисовке фона.

    З.Ы. Оказывается фон изменяется не совсем эффективно - восстанавливается разница межу крайними положениями перетаскиваемого окна. Т.е. если окно будет в левом верхнем углу до упора, а мы его перетащим в правый нижний угол до упора, то перерисуется весь фон.
  • SVN r. 2514 теперь фон при перемещении окна восстанавливается только по старой позиции, где было окно. Соответственно из "зоны поражения" ушли все окна которые раньше были вынуждены перерисовываться, так как обновлялся больший кусок фона.

    Ночная сборка не собралась, и выдалась ошибка:
    Post commit hook failed (exit code 2) with output:
    svn: E000028: Can't write to file '/home/autobuild/localcopy/.svn/tmp/nnN2VM': No space left on device
    Failed to update repository copy
  • Я почистила место и перезапустила скрипт автосборки руками, ошибок при сборке не было.
    Сделаем мир лучше!
  • Who is online

    Users browsing this forum: No registered users and 2 guests