gis_viewer_project(GIS_VIEWER(opengl),
point->lat, point->lon, point->elev,
&px, &py, &pz);
+ gint win_width = GTK_WIDGET(opengl)->allocation.width;
+ gint win_height = GTK_WIDGET(opengl)->allocation.height;
+ py = win_height - py;
if (pz > 1)
return;
glMatrixMode(GL_PROJECTION); glLoadIdentity();
glMatrixMode(GL_MODELVIEW); glLoadIdentity();
- glOrtho(0, GTK_WIDGET(opengl)->allocation.width,
- 0, GTK_WIDGET(opengl)->allocation.height, -1, 1);
+ glOrtho(0, win_width, win_height, 0, -1, 1);
glTranslated(px - marker->xoff,
py - marker->yoff, 0);
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, marker->tex);
+ glDisable(GL_CULL_FACE);
glBegin(GL_QUADS);
- glTexCoord2f(1, 1); glVertex3f(width, 0 , 0);
- glTexCoord2f(1, 0); glVertex3f(width, height, 0);
- glTexCoord2f(0, 0); glVertex3f(0 , height, 0);
- glTexCoord2f(0, 1); glVertex3f(0 , 0 , 0);
+ glTexCoord2f(1, 0); glVertex3f(width, 0 , 0);
+ glTexCoord2f(1, 1); glVertex3f(width, height, 0);
+ glTexCoord2f(0, 1); glVertex3f(0 , height, 0);
+ glTexCoord2f(0, 0); glVertex3f(0 , 0 , 0);
glEnd();
}
return FALSE;
}
-static gboolean _update_errors_cb(gpointer sphere)
+static gboolean _update_errors_cb(gpointer _opengl)
{
- roam_sphere_update_errors(sphere);
+ GisOpenGL *opengl = _opengl;
+ roam_sphere_update_errors(opengl->sphere);
+ opengl->ue_source = 0;
return FALSE;
}
static void on_view_changed(GisOpenGL *opengl,
g_debug("GisOpenGL: on_view_changed");
_set_visuals(opengl);
#ifndef ROAM_DEBUG
- opengl->ue_source = g_idle_add_full(G_PRIORITY_HIGH_IDLE+30,
- _update_errors_cb, opengl->sphere, NULL);
+ if (!opengl->ue_source)
+ opengl->ue_source = g_idle_add_full(G_PRIORITY_HIGH_IDLE+30,
+ _update_errors_cb, opengl, NULL);
//roam_sphere_update_errors(opengl->sphere);
#endif
}