Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/fb/port/kfb.c

    rfbcdeb8 r7c014d1  
    422422{
    423423        if (kfb.backbuf == NULL) {
    424                 kfb.backbuf =
    425                     malloc(kfb.width * kfb.height * kfb.pixel_bytes);
     424                kfb.backbuf = malloc(kfb.size);
    426425                if (kfb.backbuf == NULL)
    427426                        return ENOMEM;
    428427        }
    429428       
    430         for (sysarg_t y = 0; y < kfb.height; y++)
    431                 memcpy(kfb.backbuf + y * kfb.width * kfb.pixel_bytes,
    432                     kfb.addr + FB_POS(0, y), kfb.width * kfb.pixel_bytes);
    433        
     429        memcpy(kfb.backbuf, kfb.addr, kfb.size);
    434430        return EOK;
    435431}
     
    440436                return ENOENT;
    441437       
    442         for (sysarg_t y = 0; y < kfb.height; y++)
    443                 memcpy(kfb.addr + FB_POS(0, y),
    444                     kfb.backbuf + y * kfb.width * kfb.pixel_bytes,
    445                     kfb.width * kfb.pixel_bytes);
    446        
     438        memcpy(kfb.addr, kfb.backbuf, kfb.size);
    447439        return EOK;
    448440}
     
    756748       
    757749        kfb.size = scanline * height;
    758        
    759         rc = physmem_map((void *) paddr + offset,
    760             ALIGN_UP(kfb.size, PAGE_SIZE) >> PAGE_WIDTH,
    761             AS_AREA_READ | AS_AREA_WRITE, (void *) &kfb.addr);
     750        kfb.addr = as_get_mappable_page(kfb.size);
     751        if (kfb.addr == NULL) {
     752                free(kfb.glyphs);
     753                return ENOMEM;
     754        }
     755       
     756        rc = physmem_map((void *) paddr + offset, kfb.addr,
     757            ALIGN_UP(kfb.size, PAGE_SIZE) >> PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE);
    762758        if (rc != EOK) {
    763759                free(kfb.glyphs);
Note: See TracChangeset for help on using the changeset viewer.