X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcpbuffer.C;h=fed0d2d2d10f6946edb4799e0f5bdabc7abf04c1;hp=7249d8344177603ccc2f947d8e73e88a3ae51465;hb=21c2e6b36d6a96c2f662a89459d607b5a387f4eb;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd diff --git a/cinelerra-5.1/guicast/bcpbuffer.C b/cinelerra-5.1/guicast/bcpbuffer.C index 7249d834..fed0d2d2 100644 --- a/cinelerra-5.1/guicast/bcpbuffer.C +++ b/cinelerra-5.1/guicast/bcpbuffer.C @@ -2,21 +2,21 @@ /* * CINELERRA * Copyright (C) 2008 Adam Williams - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ #include "bcpbuffer.h" @@ -65,6 +65,12 @@ void BC_PBuffer::create_pbuffer(int w, int h) { #ifdef HAVE_GL int ww = (w + 3) & ~3, hh = (h + 3) & ~3; + BC_WindowBase *current_window = BC_WindowBase::get_synchronous()->current_window; + window_id = current_window->get_id(); + + pbuffer = BC_WindowBase::get_synchronous()->get_pbuffer(ww, hh, &glx_context); + if( pbuffer ) return; + int pb_attrs[] = { GLX_PBUFFER_WIDTH, ww, GLX_PBUFFER_HEIGHT, hh, @@ -73,7 +79,6 @@ void BC_PBuffer::create_pbuffer(int w, int h) None }; - BC_WindowBase *current_window = BC_WindowBase::get_synchronous()->current_window; Display *dpy = current_window->get_display(); GLXFBConfig *fb_cfgs = current_window->glx_pbuffer_fb_configs(); int nfb_cfgs = current_window->n_fbcfgs_pbuffer; @@ -92,9 +97,8 @@ void BC_PBuffer::create_pbuffer(int w, int h) // __LINE__, current_config, visinfo, BC_Resources::error, pbuffer); if( pbuffer ) { - window_id = current_window->get_id(); glx_context = glXCreateContext(dpy, visinfo, current_window->glx_win_context, 1); - BC_WindowBase::get_synchronous()->put_pbuffer(w, h, pbuffer, glx_context); + BC_WindowBase::get_synchronous()->put_pbuffer(ww, hh, pbuffer, glx_context); } else printf("BC_PBuffer::create_pbuffer: failed\n");