1

C'est moi qui ne suis pas frais, ou ce if/else est stupide (le premier):
if ( (surface->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) { /* We only support accelerated blitting to hardware */ if ( surface->map->dst->flags & SDL_HWSURFACE ) { hw_blit_ok = current_video->info.blit_hw; } else { hw_blit_ok = 0; } if (hw_blit_ok && (surface->flags & SDL_SRCCOLORKEY)) { hw_blit_ok = current_video->info.blit_hw_CC; } if ( hw_blit_ok && (surface->flags & SDL_SRCALPHA) ) { hw_blit_ok = current_video->info.blit_hw_A; } } else { /* We only support accelerated blitting to hardware */ if ( surface->map->dst->flags & SDL_HWSURFACE ) { hw_blit_ok = current_video->info.blit_sw; } else { hw_blit_ok = 0; } if (hw_blit_ok && (surface->flags & SDL_SRCCOLORKEY)) { hw_blit_ok = current_video->info.blit_sw_CC; } if ( hw_blit_ok && (surface->flags & SDL_SRCALPHA) ) { hw_blit_ok = current_video->info.blit_sw_A; } }

(ça viens de la derniere version de la SDL: 1.2.14)

edit: c'est moi qui ne suis pas frais, 'hw' != 'sw'
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2

T''as bien vu la différence entre hw et sw ? Par contre, c'est le commentaire qui me semble erroné.

3

Ce morceau de code est pourri jusqu'à la moelle, c'est illisible au possible :/
enum { SDL_SW = false ; SDL_HW = true ; _SDL_ENUM } int info_blit[_SDL_ENUM] = { current_video->info.blit_sw , current_video->info.blit_hw } ; int info_blit_A[_SDL_ENUM] = { current_video->info.blit_sw_A , current_video->info.blit_hw_A } ; int info_blit_CC[_SDL_ENUM] = { current_video->info.blit_sw_CC , current_video->info.blit_hw_CC } ; int sdl_type = ( (surface->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) ; hw_blit_ok = ( surface->map->dst->flags & SDL_HWSURFACE ) ? info_blit[sdl_type] : 0 ; hw_blit_ok = (hw_blit_ok && (surface->flags & SDL_SRCCOLORKEY)) ? info_blit_CC[sdl_type] : hw_blit_ok ; hw_blit_ok = ( hw_blit_ok && (surface->flags & SDL_SRCALPHA) ) ? info_blit_A[sdl_type] : hw_blit_ok ;

100% mieux et plus lisible...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

4

va te proposer au poste de dev sur le projet SDL embarrassed

(a vrai dire ton code est ignoble et ne doit pas compiler)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

5

Ignoble, ignoble, c'est parce que j'ai mis les initialisations, sinon c'est whaaaaachement plus clair ma distinction HW vs. SW !

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

6

mais il est largement plus lisible, chuis d'accord à quelques \n près.

7

Ça, les \n, j'y suis arrivé parce que 1) je viens de l'assembleur 2) suivant le débogueur vu qu'il y en a peu qui travaillent à la colonne 3) pour differ des sources c'est impeccable...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

8

ce que je voulais dire c'est que pour moi, lisible ==

enum
	{
	SDL_SW = false;
	SDL_HW = true;
	_SDL_ENUM
	};

int info_blit[_SDL_ENUM] =
	{
	current_video->info.blit_sw ,
	current_video->info.blit_hw
	};

int info_blit_A[_SDL_ENUM] = 
	{
	current_video->info.blit_sw_A,
	current_video->info.blit_hw_A
	};

int info_blit_CC[_SDL_ENUM] =
	{
	current_video->info.blit_sw_CC,
	current_video->info.blit_hw_CC
  	};

int	sdl_type	= ( 			(surface->flags			& SDL_HWSURFACE 	) == SDL_HWSURFACE );
	hw_blit_ok	= ( 			(surface->map->dst->flags	& SDL_HWSURFACE		)   ? info_blit   [sdl_type] : 0;
	hw_blit_ok	= ( hw_blit_ok &&	(surface->flags			& SDL_SRCCOLORKEY	) ) ? info_blit_CC[sdl_type] : hw_blit_ok;
	hw_blit_ok	= ( hw_blit_ok &&	(surface->flags			& SDL_SRCALPHA		) ) ? info_blit_A [sdl_type] : hw_blit_ok;

9

mes yeux sick

et comme je le disais plustot ce type de code ne compile pas de toutes maniere :

./src/video/SDL_blit.c: In function 'SDL_CalculateBlit':
./src/video/SDL_blit.c:279: error: expected ',' or '}' before ';' token
./src/video/SDL_blit.c:284: error: '_SDL_ENUM' undeclared (first use in this function)
./src/video/SDL_blit.c:284: error: (Each undeclared identifier is reported only once
./src/video/SDL_blit.c:284: error: for each function it appears in.)
./src/video/SDL_blit.c:303: error: expected ')' before ';' token
./src/video/SDL_blit.c:315: error: expected ';' before '}' token
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

10

11

squalyl (./8) :
ce que je voulais dire c'est que pour moi, lisible ==

Ouais, ben déjà quand ça dépasse les 80 colonnes, comprendre que ça peut pas être lu sans avoir à scroller à droite ou être imprimé sans avoir à passer à la ligne en foutant les alignements en l'air, ben c'est hors de question. J'avais commencé un article à ce propos, faut que je termine ça à l'occasion.
Godzil (./9) :
mes yeux sick

et comme je le disais plustot ce type de code ne compile pas de toutes maniere :


J'ai oublié un ; après le } du enum, rajoute le et recompile...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

12

ça dépend des contraintes évidemment. Chez nous, nous avons des écrans 24 pouces, donc la limitation à 80chars est secondaire.

13

24 pouces, vous avez de la chance tongue

Mais oui, en 2011 la règle des 80 caractères c'est obsolète, et on n'est plus à l'époque où on imprimait des listings.
D'ailleurs, rien n'empêche d'imprimer le code au format paysage, au pire.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

14

Nan mais j'imprime encore sur papier listing, Epson FX-80, matricielle 9 aiguille, môa Monsieur ! Sérieusement, et ma mauvaise foi alors, j'ai pas le droit de la développer un peu ?

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

15

(J'aime pas les lignes longues, ça suxe, c'est pas optimisé de devoir balayer horizontalement les yeux couic)

16

C'est pour ça qu'il faut coder en assembleur tripo

17

#crayove#

18

19

Rhôôôô le troll, même moué j'aurais pas osé...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

20

ce bug nous fait chier depuis 1 semaine, c'est pas un troll.

21

Ouais ben imagine si chaque EXE ou DLL s'amuse à libérer les pointeurs qu'il recoit (justement les SURFACE SDL ou les buffer OpenGL) on n'a pas fini de rire...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

22

Dans le cas d'une SURFACE SDL, on a pas ce problème, c'est à chaque fois SDL qui alloue et libère avec NewSurface()/FreeSurface.

23

C'est ce qui est expliqué dans le lien, chaque DLL doit s'occuper de libérer ce qu'elle a réservée. En l'occurence c'est ce à quoi servent NewSurface()/FreeSurface()

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

24

squalyl: en assembleur sous Windows, t'as pas ce problème, parce que tu utilises les fonction Windows de gestion de la mémoire, qui n'ont justement pas ce souci grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

25

Ouais mais bon, l"assembleur sous Windows, heu, erf quoi. Bon c'est sûr y'a WinAsm ou HLA, mais quand même...

Kochise
avatar
Si Dieu m'a de nouveau fait homme, cette fois il m'a pas raté : marcher sur l'eau et dupliquer les pains, ça marche p'us :/

26

T'as tort, c'est très bien embarrassed
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

27

je connais GlobalAlloc, mais la lib a pour but d'etre portable, ça aurait arrangé tout le monde que malloc fonctionne correctement.

28

#ifdef powered
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

29

mouais ça améliore pas la lisibilité du code et je sais pas si c'est MISRA compatible embarrassed

30

#if _WINDOWS_ #define Alloc(x,y,z) GlobalAlloc(x,y) #else #define Alloc(x,y,z) malloc(x,y) #endif void func() { t = Alloc(bla, bla, bla); }

(bien sur ce n'est qu'un exemple absurde)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.