示例#1
0
void
jpeg_mem_term(j_common_ptr cinfo)
{
    jpeg_compress_data *jcd = cinfo2jcd(cinfo);
    gs_memory_chunk_release(jcd->cmem);
    jcd->cmem = NULL;
}
示例#2
0
static void
jpeg_free(j_common_ptr cinfo, void *data, const char *info)
{
    gs_memory_t *mem = cinfo2jcd(cinfo)->cmem;

    gs_free_object(mem, data, info);
}
示例#3
0
static void *
jpeg_alloc(j_common_ptr cinfo, size_t size, const char *info)
{
    gs_memory_t *mem = cinfo2jcd(cinfo)->cmem;

    return(gs_alloc_bytes(mem, size, info));
}
示例#4
0
long
jpeg_mem_init(j_common_ptr cinfo)
{
    jpeg_compress_data *jcd = cinfo2jcd(cinfo);
    gs_memory_t *mem = jcd->memory->non_gc_memory;
    int code = 0;
    gs_memory_t *cmem = NULL;

    code = gs_memory_chunk_wrap(&(cmem), mem);
    if (code != 0) {
        return (code);
    }
    jcd->cmem = cmem;
    return 0;			/* just set max_memory_to_use to 0 */
}
示例#5
0
static void
jpeg_free(j_common_ptr cinfo, void *data, const char *info)
{
    jpeg_compress_data *jcd = cinfo2jcd(cinfo);
    gs_memory_t *mem = jcd->memory;
    jpeg_block_t  *p  =  jcd->blocks;
    jpeg_block_t **pp = &jcd->blocks;

    gs_free_object(mem, data, info);
    while(p && p->data != data)
      { pp = &p->next;
        p = p->next;
      }
    if(p == 0)
      lprintf1("Freeing unrecorded JPEG data 0x%lx!\n", (ulong)data);
    else
      *pp = p->next;
    gs_free_object(mem, p, "jpeg_free(block)");
}
示例#6
0
static void *
jpeg_alloc(j_common_ptr cinfo, size_t size, const char *info)
{
    jpeg_compress_data *jcd = cinfo2jcd(cinfo);
    gs_memory_t *mem = jcd->memory;

    jpeg_block_t *p = gs_alloc_struct_immovable(mem, jpeg_block_t,
                        &st_jpeg_block, "jpeg_alloc(block)");
    void *data = gs_alloc_bytes_immovable(mem, size, info);

    if (p == 0 || data == 0) {
        gs_free_object(mem, data, info);
        gs_free_object(mem, p, "jpeg_alloc(block)");
        return 0;
    }
    p->data = data;
    p->next = jcd->blocks;
    jcd->blocks = p;
    return data;
}