Сообщения об ошибках не помещенные в Bugzilla

Applications development, KoOS API questions
  • Тостер - не разработчик, но уже ближе.
  • SVN r.2063 - MAGNIFY, проверка окна на "свернутость" (rolled up) перед отрисовкой.
  • KFAR has 2 defects (at least for me):
    1. it crashes if I'm trying to edit file of zero size
    2. it doesn't update panels after editing is completed, so old file size is displayed

    For the 1st defect, crash log is

    Code: Select all

    K : Process - forced terminate PID: 00000027
    K : Page fault
    K : EAX : FFFFF01B EBX : 0005D9E4 ECX : 000003F9
    K : EDX : 00000FE4 ESI : 0005D9E4 EDI : 0006200C
    K : EBP : 0005C000 EIP : 0000387E ESP : 0002B770
    K : Flags : 00011206 CS : 0000001B (application)
    in code we trust
  • Очень интересная вещь.

    Я решил переделать Flood-it в игрушку Clicks. До этого рисовались цветные квадратики. Сейчас вместо них должны рисоваться кнопочки. Делаю так:

    Code: Select all

    //DrawBar(j*BLOCK_SIZE+USER_PANEL_WIDTH, i*BLOCK_SIZE+5, BLOCK_SIZE,BLOCK_SIZE, FIELD_COLORS[color_id]);
    DefineButton(j*BLOCK_SIZE+USER_PANEL_WIDTH,i*BLOCK_SIZE+5,BLOCK_SIZE,BLOCK_SIZE, i*BLOCKS_NUM+j+100,FIELD_COLORS[color_id]);
    
    И тут обнаруживаю, что нарисованные кнопки на 1 пиксель больше, квадратиков, которые до этого рисовались!
    Почему?
    Attachments
    flood-it.zip (10.15 KiB)
    Downloaded 168 times
    Из хаоса в космос
  • А ты можешь сделать скриншоты, чтобы замерить размеры по точкам?
    Судя по коду, который ты дал,

    Code: Select all

    void DrawBar(dword x,y,w,h,EDX)
    {
    	EAX = 13;
    	EBX = x<<16+w;
    	ECX = y<<16+h;
     	$int 0x40
    }
    
    void DefineButton(dword x,y,w,h,EDX,ESI)
    {
     	EAX = 8;
    	EBX = x<<16+w;
    	ECX = y<<16+h;
     	$int 0x40
    }
    
    И значит, размеры должны совпадать.
  • Должны, а не совпадают. Кнопки на 1 пиксель больше в ширину и длинну.
    Из хаоса в космос
  • А если установить плоский тип кнопок? (а не 3d, который по умолчанию)
  • Тоже самое.
    Из хаоса в космос
  • Это давно так, ещё помойму с Менуета осталось. Линии. кнопки, окна и что-то ещё, на 1 пиксель больше рисуются, по оси х и у. Почему так, думаю только Вилле знает.
  • В чём может быть причина «Page fault»?
    На ядре 1319 всё нормально. А вот в 2306 и 2307 — такая ошибка. Моё приложение вылетает сразу после отрисовки окна.
    Image

    Программа отображает увеличенный участок экрана под указателем мыши и показывает RGB-цвет точки.
    Скриншот её тут: viewtopic.php?p=38800#p38800
  • Скилл "telepathy" приветствуется.
  • Code: Select all

    Vesa20_getpixel32:
            imul    ebx, [BytesPerScanLine] ; ebx = y * y multiplier
            lea     edi, [ebx+eax*4]; edi = x*4+(y*y multiplier)
            mov     ecx, [LFB_BASE+edi] ; <--- crash here, `LFB_BASE+edi` points below LFB area due to overflow
            and     ecx, 0xffffff
            ret
    EBX contains illegal value in the first place.
    in code we trust
  • mike.dld
    я так понимаю, что эта функция getpixel была изменена в новых версиях ядра.

    Раньше, если подвести указатель к краю экрана, то программа отображала кусочек с противоположного края.
    Image

    Теперь на новых версиях ядра это свойство программы сохранилось только для горизонтального направления.
    Если опустить указатель вниз, то кусочек сверху не отобразится — вместо него чернота.
    Image

    Если же поднять указатель наверх — программа вылетает.

    И вот что ещё заметил:
    при перемещении окна за заголовок отображается инверсный прямоугольник, так вот,
    если во время перемещения процесс умирает(как у меня) — прямоугольник всё ещё остаётся и при этом может оставить артефакт на окне другого приложения.
    Image
  • mike.dld
    That code was always working well, nothing changed -- maybe something damages [BytesPerScanLine] ?
    What screendriver is used? Emulator?
  • Who is online

    Users browsing this forum: No registered users and 17 guests