Ignore:
File:
1 edited

Legend:

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

    r7c014d1 rfbcdeb8  
    422422{
    423423        if (kfb.backbuf == NULL) {
    424                 kfb.backbuf = malloc(kfb.size);
     424                kfb.backbuf =
     425                    malloc(kfb.width * kfb.height * kfb.pixel_bytes);
    425426                if (kfb.backbuf == NULL)
    426427                        return ENOMEM;
    427428        }
    428429       
    429         memcpy(kfb.backbuf, kfb.addr, kfb.size);
     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       
    430434        return EOK;
    431435}
     
    436440                return ENOENT;
    437441       
    438         memcpy(kfb.addr, kfb.backbuf, kfb.size);
     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       
    439447        return EOK;
    440448}
     
    748756       
    749757        kfb.size = scanline * height;
    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);
     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);
    758762        if (rc != EOK) {
    759763                free(kfb.glyphs);
Note: See TracChangeset for help on using the changeset viewer.