void GLDrawClass::paintGL(void)
{
- SaveToPixmap(); // If save requested, then Save to Pixmap.
- //qWarning("Test");
if(extfunc != NULL) {
if(delay_update) {
extfunc->setVirtualVramSize(vram_width, vram_height);
//extfunc->paintGL();
}
emit sig_draw_timing();
+ SaveToPixmap(); // If save requested, then Save to Pixmap.
}
scrntype_t* GLDrawClass::get_screen_buffer(int y)
}
}
-//void GLDrawClass::paintEvent(QPaintEvent *ev)
-//{
-// // Do Nothing.
-// // http://doc.qt.io/qt-5/qopenglwidget.html#Threading
-//}
#ifndef GL_MULTISAMPLE
#define GL_MULTISAMPLE 0x809D
{
if(save_pixmap_req) {
if(!filename_screen_pixmap.isEmpty()) {
- QImage snapshot = this->grabFramebuffer();
+ //QImage snapshot = QImage(this->size(), QImage::Format_ARGB32_Premultiplied);
+ //glReadPixels(0, 0, this->width(), this->height(), GL_RGBA, GL_UNSIGNED_BYTE, snapshot.bits());
+ QImage snapshot = this->grabFramebuffer().convertToFormat(QImage::Format_RGB32);
snapshot.save(filename_screen_pixmap);
}
save_pixmap_req = false;
if(using_flags->is_use_one_board_computer()) {
//int size = vm_screen_buffer.pImage.byteCount();
int i = counter;
- rec_image_buffer = QImage(background_image);
- QImage *video_result;
+ rec_image_buffer = background_image.rgbSwapped();
if(p_glv->is_ready_to_map_vram_texture()) {
vm_screen_buffer.is_mapped = true;
vm_screen_buffer.glv = p_glv;
if(p != NULL) {
if(p != vm_screen_buffer.pImage.scanLine(y)) {
memcpy(vm_screen_buffer.pImage.scanLine(y), p, vm_screen_buffer.pImage.width() * sizeof(scrntype_t));
- } else {
- memset(vm_screen_buffer.pImage.scanLine(y), 0x00, vm_screen_buffer.pImage.width() * sizeof(scrntype_t));
}
} else {
if(vm_screen_buffer.pImage.scanLine(y) != NULL) {
}
}
}
- video_result = &(vm_screen_buffer.pImage);
+ QImage video_result = QImage(vm_screen_buffer.pImage);
QRgb pixel;
- int ww = video_result->width();
- int hh = video_result->height();
+ int ww = video_result.width();
+ int hh = video_result.height();
//printf("%d x %d\n", ww, hh);
for(int yy = 0; yy < hh; yy++) {
for(int xx = 0; xx < ww; xx++) {
- pixel = video_result->pixel(xx, yy);
+ pixel = video_result.pixel(xx, yy);
#if defined(__LITTLE_ENDIAN__)
pixel |= 0xff000000;
if(pixel != 0xff000000) {
if(p != NULL) {
if(p != vm_screen_buffer.pImage.scanLine(y)) {
memcpy(vm_screen_buffer.pImage.scanLine(y), p, vm_screen_buffer.pImage.width() * sizeof(scrntype_t));
- } else {
- memset(vm_screen_buffer.pImage.scanLine(y), 0x00, vm_screen_buffer.pImage.width() * sizeof(scrntype_t));
}
} else {
if(vm_screen_buffer.pImage.scanLine(y) != NULL) {