X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fguicast%2Fbcbitmap.C;h=e9118da47ab9c1248516ba647ba67dec81fcd39e;hb=1784ebd93b6c278a5205f040b5b40d8bdd79ed8a;hp=8289c5994a155433bfc9ef5e3c52a8ed31f05c4a;hpb=425f9eab2f37d52e16e7ebdcd4b78f6de7ed68e7;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/guicast/bcbitmap.C b/cinelerra-5.0/guicast/bcbitmap.C index 8289c599..e9118da4 100644 --- a/cinelerra-5.0/guicast/bcbitmap.C +++ b/cinelerra-5.0/guicast/bcbitmap.C @@ -219,7 +219,9 @@ BC_XvImage::BC_XvImage(BC_Bitmap *bitmap, int index, int id = BC_CModels::bc_to_x(color_model); xv_image = XvCreateImage(display, bitmap->xv_portid, id, 0, w, h); dataSize = xv_image->data_size; - data = new unsigned char[dataSize + 8]; + long data_sz = dataSize + 8; + data = new unsigned char[data_sz]; + memset(data, 0, data_sz); xv_image->data = (char *) data; w = xv_image->width; h = xv_image->height; @@ -250,7 +252,9 @@ BC_XImage::BC_XImage(BC_Bitmap *bitmap, int index, bytesPerLine = ximage->bytes_per_line; bitsPerPixel = ximage->bits_per_pixel; dataSize = h * bytesPerLine; - data = new unsigned char[dataSize + 8]; + long data_sz = dataSize + 8; + data = new unsigned char[data_sz]; + memset(data, 0, data_sz); ximage->data = (char*) data; row_data = new unsigned char*[h]; for( int i=0; iparent_window = parent_window; this->top_level = parent_window->top_level; this->xv_portid = resources->use_xvideo ? top_level->xvideo_port_id : -1; + if( w < 1 ) w = 1; + if( h < 1 ) h = 1; this->w = w; this->h = h; this->color_model = color_model; @@ -417,7 +421,6 @@ update_buffers(int count, int lock_avail) BC_BitmapImage *buffer = buffers[i]; if( buffer == active_bfr ) active_bfr = 0; if( buffer->is_avail() ) { - avail.remove_pointer(buffer); delete buffer; } else { @@ -427,10 +430,10 @@ update_buffers(int count, int lock_avail) ++i; } } - if( lock_avail ) avail_lock->unlock(); delete [] buffers; buffers = new_buffers; buffer_count = count; + if( lock_avail ) avail_lock->unlock(); //top_level->unlock_window(); }