From a81bc2c1a433a45a19e00905ac475bd59624ab1c Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Sat, 20 Dec 2008 19:06:00 +0000 Subject: [PATCH] Fixes SIGSEGVs and weird coordinates of viewports when resizing the screen (w/ and w/o zoom, with resolution change or window resize) git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@406 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- graph.c | 18 +++++++++++++++++- windows.c | 7 +++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/graph.c b/graph.c index 21faa94f..1cb6ab67 100644 --- a/graph.c +++ b/graph.c @@ -336,14 +336,30 @@ void Initialiser_mode_video(int Largeur, int Hauteur, int Fullscreen) Brouillon_Loupe_Mode=0; // | la résolution. } if (Loupe_Mode) + { Pixel_Preview=Pixel_Preview_Loupe; + } else + { Pixel_Preview=Pixel_Preview_Normal; + // Recaler la vue (meme clipping que dans Scroller_ecran()) + if (Principal_Decalage_X+Largeur_ecran>Principal_Largeur_image) + Principal_Decalage_X=Principal_Largeur_image-Largeur_ecran; + else if (Principal_Decalage_X<0) + Principal_Decalage_X=0; + if (Principal_Decalage_Y+Menu_Ordonnee>Principal_Hauteur_image) + Principal_Decalage_Y=Principal_Hauteur_image-Menu_Ordonnee; + else if (Principal_Decalage_Y<0) + Principal_Decalage_Y=0; + } Calculer_donnees_loupe(); + if (Loupe_Mode) + Recadrer_ecran_par_rapport_au_zoom(); Calculer_limites(); Calculer_coordonnees_pinceau(); - + Afficher_ecran(); + Resize_Largeur=0; Resize_Hauteur=0; } diff --git a/windows.c b/windows.c index 7da3fa27..f84f71bc 100644 --- a/windows.c +++ b/windows.c @@ -1233,6 +1233,13 @@ void Calculer_donnees_loupe(void) Loupe_Decalage_X=Principal_Largeur_image-Loupe_Largeur; if (Loupe_Decalage_X<0) Loupe_Decalage_X=0; } + if (Loupe_Mode && Loupe_Decalage_Y) + { + if (Principal_Hauteur_image