rework histogram_bezier, init wm icon set_icon(gg), update de.po+msg/txt
[goodguy/history.git] / cinelerra-5.1 / guicast / vframe3d.C
index 65eb1f3e92ff6a5def475444ac0b9eec810b859a..649a3b1997343d9577a0b885ec95da2f153e7adf 100644 (file)
@@ -99,10 +99,6 @@ void VFrame::to_texture()
                return;
 
        case VFrame::SCREEN:
-               if((get_w() % 4) || (get_h() % 4)) {
-                       printf("VFrame::to_texture w=%d h=%d\n", get_w(), get_h());
-                       return;
-               }
                if(pbuffer) {
                        enable_opengl();
                        screen_to_texture();
@@ -151,30 +147,22 @@ void VFrame::to_texture()
 
 void VFrame::create_pbuffer()
 {
-       if(pbuffer &&
-               pbuffer->window_id != BC_WindowBase::get_synchronous()->current_window->get_id())
-       {
+       int ww = (get_w()+3) & ~3, hh = (get_h()+3) & ~3;
+       if( pbuffer && (pbuffer->w != ww || pbuffer->h != hh ||
+           pbuffer->window_id != BC_WindowBase::get_synchronous()->current_window->get_id() ) ) {
                delete pbuffer;
                pbuffer = 0;
        }
 
-       if((get_w() % 4) || (get_h() % 4))
-       {
-               printf("VFrame::create_pbuffer w=%d h=%d\n", get_w(), get_h());
-               return;
-       }
-
-       if(!pbuffer)
-       {
-               pbuffer = new BC_PBuffer(get_w(), get_h());
+       if( !pbuffer ) {
+               pbuffer = new BC_PBuffer(ww, hh);
        }
 }
 
 void VFrame::enable_opengl()
 {
        create_pbuffer();
-       if(pbuffer)
-       {
+       if( pbuffer ) {
                pbuffer->enable_opengl();
        }
 }
@@ -278,7 +266,7 @@ void VFrame::init_screen(int w, int h)
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
 // Shift down and right so 0,0 is the top left corner
-       glTranslatef(-w/2, h/2, 0.0);
+       glTranslatef(-(w-1)/2.f, (h-1)/2.f, 0.0);
        glTranslatef(0.0, 0.0, -(far + near) / 2);
 
        glDisable(GL_DEPTH_TEST);