У меня есть эти вызовы функций:Возникли проблемы с XPutImage
OSPImgBlit(&img->_obj, &win1->_obj, 0, 0, 0, 0, 640, 480);
OSPRun(&win1->_obj, OSPWND_SWAP);
для этих реализаций:
void OSPwnd_swap(OSPobj *obj, va_list arg) {
OSPwindow *wnd = (OSPwindow *) obj;
XdbeSwapInfo swpifo;
swpifo.swap_window = wnd->_wnd;
swpifo.swap_action = XdbeUndefined;
// XdbeSwapBuffers returns true on success, we return 0 on success.
if(XdbeSwapBuffers(wnd->_dpy->_dpy, &swpifo, 1)) {
OSPrint(1, "OSPwnd_swap : Window %d swapped "
"on connection %d",
wnd->_wnd, XConnectionNumber(wnd->_dpy->_dpy));
/* XFlush(wnd->_dpy->_dpy); */
}
else {
OSPrint(1, "OSPwnd_swap : Unable to swap window %d "
"on connection %d",
wnd->_wnd, XConnectionNumber(wnd->_dpy->_dpy));
}
}
void OSPImgBlit(OSPobj *orig, OSPobj *dest, int x_orig, int y_orig,
int x_dest, int y_dest, unsigned int width, unsigned int height) {
OSPimage *orig_as_image = (OSPimage *) orig;
OSPwindow *orig_as_window = (OSPwindow *) orig;
OSPimage *dest_as_image = (OSPimage *) dest;
OSPwindow *dest_as_window = (OSPwindow *) dest;
enum {
image_to_image = 0,
image_to_window = 1,
window_to_image = 2,
window_to_window = 3
} mode = image_to_window;
switch(mode) {
case image_to_window:
XPutImage(dest_as_window->_dpy->_dpy, dest_as_window->_bbf,
dest_as_window->_gc, orig_as_image->_img,
x_orig, y_orig, x_dest, y_dest, width, height);
default:;
}
}
Весь код находится здесь: https://github.com/DJTECKING/OSPOOC.git
Мое приложение запускается правильно, но когда я пытаюсь чтобы закрыть окно, которое я создал, это случайное случайное случайное событие: - segfault - BadDrawable на X_PutI не маг - ничего (не работает кнопка закрытия на закрытие окна) - Правильно закрытое окно и приложение
Я думаю, что-то вроде я использую уже закрытое окно или освобожденного изображение, но и во всем коде я не понять, как это может произойти, любая идея?
Также XPutImage только близок к квадрату , пока я пытался скопировать все окно.
Еще один вопрос, который может быть разделен на эту тему, Я продолжаю сталкиваться с уродливыми эффектами разрыва, даже с расширением буфера Xdouble, не было ли это расширение, чтобы избежать этого?
Я не имею 10 репутации, так вот прямая ссылка на изображение: http://i.stack.imgur.com/AnlMo.png