]> Pileus Git - grits/blobdiff - src/grits-viewer.c
Add timeout for http servers
[grits] / src / grits-viewer.c
index 3a7827e51be982f9b9e4b484e0c506ec19c2893a..2f3b53e13d0db058692f757c1eb6637678b22a85 100644 (file)
@@ -160,9 +160,10 @@ static gboolean on_motion_notify(GritsViewer *viewer, GdkEventMotion *event, gpo
 {
        gdouble x = viewer->drag_x - event->x;
        gdouble y = viewer->drag_y - event->y;
-       gdouble lat, lon, elev, scale;
+       gdouble lat, lon, elev, scale, rx, ry, rz;
        grits_viewer_get_location(GRITS_VIEWER(viewer), &lat, &lon, &elev);
-       scale = elev/EARTH_R/15;
+       grits_viewer_get_rotation(GRITS_VIEWER(viewer), &rx,  &ry,  &rz);
+       scale = (elev/EARTH_R/15) * (sin(deg2rad(ABS(rx)))*4+1);
        switch (viewer->drag_mode) {
        case GRITS_DRAG_PAN:  grits_viewer_pan(viewer, -y*scale, x*scale, 0); break;
        case GRITS_DRAG_ZOOM: grits_viewer_zoom(viewer, pow(2, -y/500)); break;
@@ -526,7 +527,9 @@ gpointer grits_viewer_add(GritsViewer *viewer, GritsObject *object,
        GritsViewerClass *klass = GRITS_VIEWER_GET_CLASS(viewer);
        if (!klass->add)
                g_warning("GritsViewer: add - Unimplemented");
-       return klass->add(viewer, object, level, sort);
+       object->ref    = klass->add(viewer, object, level, sort);
+       object->viewer = viewer;
+       return object;
 }
 
 /**
@@ -539,12 +542,16 @@ gpointer grits_viewer_add(GritsViewer *viewer, GritsObject *object,
  *
  * Returns: the #GritsObject referenced by the handle
  */
-GritsObject *grits_viewer_remove(GritsViewer *viewer, gpointer ref)
+GritsObject *grits_viewer_remove(GritsViewer *viewer, gpointer _object)
 {
+       GritsObject *object = _object;
        GritsViewerClass *klass = GRITS_VIEWER_GET_CLASS(viewer);
        if (!klass->remove)
                g_warning("GritsViewer: remove - Unimplemented");
-       return klass->remove(viewer, ref);
+       klass->remove(viewer, object->ref);
+       object->ref    = NULL;
+       object->viewer = NULL;
+       return object;
 }
 
 /****************
@@ -586,6 +593,7 @@ static void grits_viewer_finalize(GObject *gobject)
 {
        g_debug("GritsViewer: finalize");
        G_OBJECT_CLASS(grits_viewer_parent_class)->finalize(gobject);
+       g_debug("GritsViewer: finalize - done");
 }
 static void grits_viewer_class_init(GritsViewerClass *klass)
 {