~ubuntu-branches/debian/sid/gscan2pdf/sid

« back to all changes in this revision

Viewing changes to lib/Gscan2pdf/Frontend/Sane.pm

  • Committer: Package Import Robot
  • Author(s): Jeffrey Ratcliffe
  • Date: 2012-02-05 22:13:28 UTC
  • mfrom: (1.3.7)
  • Revision ID: package-import@ubuntu.com-20120205221328-lbe6imlt2nymnk7o
Tags: 1.0.1-1
* New upstream release
  Closes: #653918 (gscan2pdf doesn't save metadata anymore)
  Closes: #646298 (pdf-exports of ocropus texts are slow, big)
  Closes: #646246 (gscan2pdf ignores html-entities returned by ocropus
                   documents)
  Closes: #651666 (ability to preview saved files)
  Closes: #645322 (No lock after recovery can result in data loss)
  Closes: #645323 (Imported pages have no thumbnails)
* Bumped standards to 3.9.2 (no changes required)

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
my $_POLL_INTERVAL;
14
14
my $_self;
15
15
my $buffer_size = ( 32 * 1024 );    # default size
16
 
my ($prog_name, $d, $logger);
 
16
my ( $prog_name, $d, $logger );
17
17
 
18
18
sub setup {
19
 
 (my $class, $prog_name, $d, $logger) = @_;
20
 
 $_POLL_INTERVAL = 100;    # ms
 
19
 ( my $class, $prog_name, $d, $logger ) = @_;
 
20
 $_POLL_INTERVAL = 100;             # ms
21
21
 $_self          = {};
22
22
 
23
23
 $_self->{requests} = Thread::Queue->new;
105
105
}
106
106
 
107
107
sub open_device {
108
 
 my ( $class, $device, $started_callback, $running_callback, $finished_callback, $error_callback ) = @_;
 
108
 my ( $class, $device, $started_callback, $running_callback, $finished_callback,
 
109
  $error_callback )
 
110
   = @_;
109
111
 
110
112
 my $sentinel = _enqueue_request( 'open', { device_name => $device } );
111
113
 
118
120
    $finished_callback->();
119
121
   }
120
122
   else {
121
 
    $error_callback->(Sane::strstatus( $_self->{status}));
 
123
    $error_callback->( Sane::strstatus( $_self->{status} ) );
122
124
   }
123
125
  },
124
126
  sub {
133
135
}
134
136
 
135
137
sub find_scan_options {
136
 
 my ( $class, $started_callback, $running_callback, $finished_callback, $error_callback ) = @_;
 
138
 my (
 
139
  $class,             $started_callback, $running_callback,
 
140
  $finished_callback, $error_callback
 
141
 ) = @_;
137
142
 
138
143
 my $options : shared;
139
144
 my $sentinel = _enqueue_request( 'get-options', { options => \$options } );
147
152
    $finished_callback->($options);
148
153
   }
149
154
   else {
150
 
    $error_callback->(Sane::strstatus( $_self->{status}));
 
155
    $error_callback->( Sane::strstatus( $_self->{status} ) );
151
156
   }
152
157
  },
153
158
  sub {
162
167
}
163
168
 
164
169
sub set_option {
165
 
 my ( $class, $i, $val, $started_callback, $running_callback, $finished_callback ) = @_;
 
170
 my ( $class, $i, $val, $started_callback, $running_callback,
 
171
  $finished_callback )
 
172
   = @_;
166
173
 
167
174
 my $options : shared;
168
175
 my $sentinel = _enqueue_request(
200
207
}
201
208
 
202
209
sub scan_pages {
203
 
 my ( $class, $dir, $format, $npages, $n, $step, $started_callback, $running_callback, $finished_callback, $new_page_callback,
204
 
  $error_callback )
205
 
   = @_;
 
210
 my (
 
211
  $class,             $dir,              $format,
 
212
  $npages,            $n,                $step,
 
213
  $started_callback,  $running_callback, $finished_callback,
 
214
  $new_page_callback, $error_callback
 
215
 ) = @_;
206
216
 
207
217
 $_self->{status}        = SANE_STATUS_GOOD;
208
218
 $_self->{abort_scan}    = 0;
217
227
  $_POLL_INTERVAL,
218
228
  sub {
219
229
   if ( not $$sentinel ) {
220
 
   unless ($started) {
221
 
    $started_callback->();
222
 
    $started = 1;
223
 
   }
224
 
    $running_callback->($_self->{scan_progress} );
 
230
    unless ($started) {
 
231
     $started_callback->();
 
232
     $started = 1;
 
233
    }
 
234
    $running_callback->( $_self->{scan_progress} );
225
235
    return Glib::SOURCE_CONTINUE;
226
236
   }
227
237
   else {
234
244
    }
235
245
 
236
246
    # Stop the process unless everything OK and more scans required
237
 
    unless ( ( $npages == -1 or --$npages )
 
247
    unless (
 
248
     ( $npages == -1 or --$npages )
238
249
     and ( $_self->{status} == SANE_STATUS_GOOD
239
 
        or $_self->{status} == SANE_STATUS_EOF ) )
 
250
      or $_self->{status} == SANE_STATUS_EOF )
 
251
      )
240
252
    {
241
253
     _enqueue_request('cancel');
242
254
     if (
243
 
      $_self->{status} == SANE_STATUS_GOOD
 
255
         $_self->{status} == SANE_STATUS_GOOD
244
256
      or $_self->{status} == SANE_STATUS_EOF
245
257
      or ( $_self->{status} == SANE_STATUS_NO_DOCS
246
258
       and $npages < 1
247
259
       and $n2 > 1 )
248
 
        ) {
 
260
       )
 
261
     {
249
262
      $finished_callback->();
250
263
     }
251
264
     else {
252
 
       $error_callback->( Sane::strstatus( $_self->{status} ) )
 
265
      $error_callback->( Sane::strstatus( $_self->{status} ) );
253
266
     }
254
267
     return Glib::SOURCE_REMOVE;
255
268
    }
617
630
 }
618
631
 
619
632
 my $fh;
620
 
 if ( not open( $fh, ">", $path ) ) {
 
633
 if ( not open( $fh, ">", $path ) ) {    ## no critic
621
634
  $self->{device_handle}->cancel;
622
635
  $self->{status} = SANE_STATUS_ACCESS_DENIED;
623
636
  return;
648
661
 
649
662
1;
650
663
 
651
 
 
652
664
__END__