~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/libjpeg/jcomapi.c

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * jcomapi.c
 
3
 *
 
4
 * Copyright (C) 1994-1997, Thomas G. Lane.
 
5
 * This file is part of the Independent JPEG Group's software.
 
6
 * For conditions of distribution and use, see the accompanying README file.
 
7
 *
 
8
 * This file contains application interface routines that are used for both
 
9
 * compression and decompression.
 
10
 */
 
11
 
 
12
#define JPEG_INTERNALS
 
13
#include "jinclude.h"
 
14
#include "jpeglib.h"
 
15
 
 
16
 
 
17
/*
 
18
 * Abort processing of a JPEG compression or decompression operation,
 
19
 * but don't destroy the object itself.
 
20
 *
 
21
 * For this, we merely clean up all the nonpermanent memory pools.
 
22
 * Note that temp files (virtual arrays) are not allowed to belong to
 
23
 * the permanent pool, so we will be able to close all temp files here.
 
24
 * Closing a data source or destination, if necessary, is the application's
 
25
 * responsibility.
 
26
 */
 
27
 
 
28
GLOBAL(void)
 
29
jpeg_abort (j_common_ptr cinfo)
 
30
{
 
31
  int pool;
 
32
 
 
33
  /* Do nothing if called on a not-initialized or destroyed JPEG object. */
 
34
  if (cinfo->mem == NULL)
 
35
    return;
 
36
 
 
37
  /* Releasing pools in reverse order might help avoid fragmentation
 
38
   * with some (brain-damaged) malloc libraries.
 
39
   */
 
40
  for (pool = JPOOL_NUMPOOLS-1; pool > JPOOL_PERMANENT; pool--) {
 
41
    (*cinfo->mem->free_pool) (cinfo, pool);
 
42
  }
 
43
 
 
44
  /* Reset overall state for possible reuse of object */
 
45
  if (cinfo->is_decompressor) {
 
46
    cinfo->global_state = DSTATE_START;
 
47
    /* Try to keep application from accessing now-deleted marker list.
 
48
     * A bit kludgy to do it here, but this is the most central place.
 
49
     */
 
50
    ((j_decompress_ptr) cinfo)->marker_list = NULL;
 
51
  } else {
 
52
    cinfo->global_state = CSTATE_START;
 
53
  }
 
54
}
 
55
 
 
56
 
 
57
/*
 
58
 * Destruction of a JPEG object.
 
59
 *
 
60
 * Everything gets deallocated except the master jpeg_compress_struct itself
 
61
 * and the error manager struct.  Both of these are supplied by the application
 
62
 * and must be freed, if necessary, by the application.  (Often they are on
 
63
 * the stack and so don't need to be freed anyway.)
 
64
 * Closing a data source or destination, if necessary, is the application's
 
65
 * responsibility.
 
66
 */
 
67
 
 
68
GLOBAL(void)
 
69
jpeg_destroy (j_common_ptr cinfo)
 
70
{
 
71
  /* We need only tell the memory manager to release everything. */
 
72
  /* NB: mem pointer is NULL if memory mgr failed to initialize. */
 
73
  if (cinfo->mem != NULL)
 
74
    (*cinfo->mem->self_destruct) (cinfo);
 
75
  cinfo->mem = NULL;            /* be safe if jpeg_destroy is called twice */
 
76
  cinfo->global_state = 0;      /* mark it destroyed */
 
77
}
 
78
 
 
79
 
 
80
/*
 
81
 * Convenience routines for allocating quantization and Huffman tables.
 
82
 * (Would jutils.c be a more reasonable place to put these?)
 
83
 */
 
84
 
 
85
GLOBAL(JQUANT_TBL *)
 
86
jpeg_alloc_quant_table (j_common_ptr cinfo)
 
87
{
 
88
  JQUANT_TBL *tbl;
 
89
 
 
90
  tbl = (JQUANT_TBL *)
 
91
    (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JQUANT_TBL));
 
92
  tbl->sent_table = FALSE;      /* make sure this is false in any new table */
 
93
  return tbl;
 
94
}
 
95
 
 
96
 
 
97
GLOBAL(JHUFF_TBL *)
 
98
jpeg_alloc_huff_table (j_common_ptr cinfo)
 
99
{
 
100
  JHUFF_TBL *tbl;
 
101
 
 
102
  tbl = (JHUFF_TBL *)
 
103
    (*cinfo->mem->alloc_small) (cinfo, JPOOL_PERMANENT, SIZEOF(JHUFF_TBL));
 
104
  tbl->sent_table = FALSE;      /* make sure this is false in any new table */
 
105
  return tbl;
 
106
}