diff options
Diffstat (limited to 'drivers/media/video/gspca/gspca.c')
-rw-r--r-- | drivers/media/video/gspca/gspca.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c index d951b0f0e053..b9846106913e 100644 --- a/drivers/media/video/gspca/gspca.c +++ b/drivers/media/video/gspca/gspca.c | |||
@@ -55,7 +55,7 @@ MODULE_AUTHOR("Jean-François Moine <http://moinejf.free.fr>"); | |||
55 | MODULE_DESCRIPTION("GSPCA USB Camera Driver"); | 55 | MODULE_DESCRIPTION("GSPCA USB Camera Driver"); |
56 | MODULE_LICENSE("GPL"); | 56 | MODULE_LICENSE("GPL"); |
57 | 57 | ||
58 | #define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 9, 0) | 58 | #define DRIVER_VERSION_NUMBER KERNEL_VERSION(2, 10, 0) |
59 | 59 | ||
60 | #ifdef GSPCA_DEBUG | 60 | #ifdef GSPCA_DEBUG |
61 | int gspca_debug = D_ERR | D_PROBE; | 61 | int gspca_debug = D_ERR | D_PROBE; |
@@ -440,10 +440,15 @@ void gspca_frame_add(struct gspca_dev *gspca_dev, | |||
440 | frame->v4l2_buf.sequence = ++gspca_dev->sequence; | 440 | frame->v4l2_buf.sequence = ++gspca_dev->sequence; |
441 | gspca_dev->image = frame->data; | 441 | gspca_dev->image = frame->data; |
442 | gspca_dev->image_len = 0; | 442 | gspca_dev->image_len = 0; |
443 | } else if (gspca_dev->last_packet_type == DISCARD_PACKET) { | 443 | } else { |
444 | if (packet_type == LAST_PACKET) | 444 | switch (gspca_dev->last_packet_type) { |
445 | gspca_dev->last_packet_type = packet_type; | 445 | case DISCARD_PACKET: |
446 | return; | 446 | if (packet_type == LAST_PACKET) |
447 | gspca_dev->last_packet_type = packet_type; | ||
448 | return; | ||
449 | case LAST_PACKET: | ||
450 | return; | ||
451 | } | ||
447 | } | 452 | } |
448 | 453 | ||
449 | /* append the packet to the frame buffer */ | 454 | /* append the packet to the frame buffer */ |
@@ -454,6 +459,12 @@ void gspca_frame_add(struct gspca_dev *gspca_dev, | |||
454 | gspca_dev->frsz); | 459 | gspca_dev->frsz); |
455 | packet_type = DISCARD_PACKET; | 460 | packet_type = DISCARD_PACKET; |
456 | } else { | 461 | } else { |
462 | /* !! image is NULL only when last pkt is LAST or DISCARD | ||
463 | if (gspca_dev->image == NULL) { | ||
464 | err("gspca_frame_add() image == NULL"); | ||
465 | return; | ||
466 | } | ||
467 | */ | ||
457 | memcpy(gspca_dev->image + gspca_dev->image_len, | 468 | memcpy(gspca_dev->image + gspca_dev->image_len, |
458 | data, len); | 469 | data, len); |
459 | gspca_dev->image_len += len; | 470 | gspca_dev->image_len += len; |