| version 1.8, 2007/01/24 14:09:32 | version 1.11, 2011/01/15 16:01:53 | 
| Line 58  typedef struct { | Line 58  typedef struct { | 
 | RECT_T          rect;           /* drawarea に描画するサイズ */ | RECT_T          rect;           /* drawarea に描画するサイズ */ | 
 |  |  | 
 | /* toolkit depend */ | /* toolkit depend */ | 
 |  | GdkPixbuf       *drawsurf; | 
 | GdkPixbuf       *backsurf; | GdkPixbuf       *backsurf; | 
 | GdkPixbuf       *surface; | GdkPixbuf       *surface; | 
 | double          ratio_w, ratio_h; | double          ratio_w, ratio_h; | 
| Line 415  scrnmng_create(UINT8 mode) | Line 416  scrnmng_create(UINT8 mode) | 
 | gdk_pixbuf_fill(drawmng.surface, 0); | gdk_pixbuf_fill(drawmng.surface, 0); | 
 |  |  | 
 | if (mode & SCRNMODE_FULLSCREEN) { | if (mode & SCRNMODE_FULLSCREEN) { | 
 |  | drawmng.drawsurf = | 
 |  | real_fullscreen ? drawmng.backsurf : drawmng.surface; | 
 | xmenu_hide(); | xmenu_hide(); | 
| if (real_fullscreen) { | gtk_window_fullscreen_mode(main_window); | 
| gtk_window_fullscreen_mode(main_window); |  | 
| } else { |  | 
| gtk_window_fullscreen(GTK_WINDOW(main_window)); |  | 
| } |  | 
 | } else { | } else { | 
| if (real_fullscreen) { | drawmng.drawsurf = (scrnstat.multiple == SCREEN_DEFMUL) | 
| gtk_window_restore_mode(main_window); | ? drawmng.backsurf : drawmng.surface; | 
| } else { | gtk_window_restore_mode(main_window); | 
| gtk_window_unfullscreen(GTK_WINDOW(main_window)); |  | 
| } |  | 
 | xmenu_show(); | xmenu_show(); | 
 | } | } | 
 |  |  | 
| Line 454  scrnmng_fullscreen(int onoff) | Line 451  scrnmng_fullscreen(int onoff) | 
 | { | { | 
 |  |  | 
 | if (onoff) { | if (onoff) { | 
| if (real_fullscreen) { | gtk_window_fullscreen_mode(main_window); | 
| gtk_window_fullscreen_mode(main_window); |  | 
| } else { |  | 
| gtk_window_fullscreen(GTK_WINDOW(main_window)); |  | 
| } |  | 
 | } else { | } else { | 
| if (real_fullscreen) { | gtk_window_restore_mode(main_window); | 
| gtk_window_restore_mode(main_window); |  | 
| } else { |  | 
| gtk_window_unfullscreen(GTK_WINDOW(main_window)); |  | 
| } |  | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 479  void | Line 468  void | 
 | scrnmng_setwidth(int posx, int width) | scrnmng_setwidth(int posx, int width) | 
 | { | { | 
 |  |  | 
 | UNUSED(posx); |  | 
 |  |  | 
 | scrnstat.width = width; | scrnstat.width = width; | 
 | renewal_client_size(); | renewal_client_size(); | 
 | } | } | 
| Line 489  void | Line 476  void | 
 | scrnmng_setheight(int posy, int height) | scrnmng_setheight(int posy, int height) | 
 | { | { | 
 |  |  | 
 | UNUSED(posy); |  | 
 |  |  | 
 | scrnstat.height = height; | scrnstat.height = height; | 
 | renewal_client_size(); | renewal_client_size(); | 
 | } | } | 
| Line 510  scrnmng_setmultiple(int multiple) | Line 495  scrnmng_setmultiple(int multiple) | 
 |  |  | 
 | if (scrnstat.multiple != multiple) { | if (scrnstat.multiple != multiple) { | 
 | scrnstat.multiple = multiple; | scrnstat.multiple = multiple; | 
| soundmng_stop(); | if (!(drawmng.scrnmode & SCRNMODE_FULLSCREEN)) { | 
| mouse_running(MOUSE_STOP); | soundmng_stop(); | 
| scrnmng_destroy(); | mouse_running(MOUSE_STOP); | 
| if (scrnmng_create(scrnmode) != SUCCESS) { | scrnmng_destroy(); | 
| toolkit_widget_quit(); | if (scrnmng_create(scrnmode) != SUCCESS) { | 
| return; | toolkit_widget_quit(); | 
|  | return; | 
|  | } | 
|  | renewal_client_size(); | 
|  | scrndraw_redraw(); | 
|  | mouse_running(MOUSE_CONT); | 
|  | soundmng_play(); | 
 | } | } | 
 | renewal_client_size(); |  | 
 | scrndraw_redraw(); |  | 
 | mouse_running(MOUSE_CONT); |  | 
 | soundmng_play(); |  | 
 | } | } | 
 | } | } | 
 |  |  | 
| Line 551  void | Line 538  void | 
 | scrnmng_surfunlock(const SCRNSURF *surf) | scrnmng_surfunlock(const SCRNSURF *surf) | 
 | { | { | 
 |  |  | 
| UNUSED(surf); | if (drawmng.drawsurf == drawmng.surface) { | 
|  |  | 
| if (((drawmng.scrnmode & SCRNMODE_FULLSCREEN) && real_fullscreen) |  | 
| && !(drawmng.scrnmode & SCRNMODE_FULLSCREEN) && (scrnstat.multiple == SCREEN_DEFMUL)) { |  | 
| /* Nothing to do */ |  | 
| } else { |  | 
 | gdk_pixbuf_scale(drawmng.backsurf, drawmng.surface, | gdk_pixbuf_scale(drawmng.backsurf, drawmng.surface, | 
 | 0, 0, drawmng.rect.right, drawmng.rect.bottom, | 0, 0, drawmng.rect.right, drawmng.rect.bottom, | 
 | 0, 0, drawmng.ratio_w, drawmng.ratio_h, | 0, 0, drawmng.ratio_w, drawmng.ratio_h, | 
| Line 570  void | Line 552  void | 
 | scrnmng_update(void) | scrnmng_update(void) | 
 | { | { | 
 | GdkDrawable *d = drawarea->window; | GdkDrawable *d = drawarea->window; | 
| GdkGC *gc = drawarea->style->fg_gc[GTK_WIDGET_STATE(drawarea)]; | GdkGC *gc = drawarea->style->fg_gc[gtk_widget_get_state(drawarea)]; | 
 |  |  | 
 | if (scrnmng.palchanged) { | if (scrnmng.palchanged) { | 
 | scrnmng.palchanged = FALSE; | scrnmng.palchanged = FALSE; | 
| Line 596  scrnmng_update(void) | Line 578  scrnmng_update(void) | 
 | } | } | 
 | } | } | 
 |  |  | 
| if (((drawmng.scrnmode & SCRNMODE_FULLSCREEN) && real_fullscreen) | gdk_draw_pixbuf(d, gc, drawmng.drawsurf, | 
| && !(drawmng.scrnmode & SCRNMODE_FULLSCREEN) && (scrnstat.multiple == SCREEN_DEFMUL)) { | 0, 0, | 
| gdk_draw_pixbuf(d, gc, drawmng.backsurf, | drawmng.scrn.left, drawmng.scrn.top, | 
| 0, 0, | drawmng.rect.right, drawmng.rect.bottom, | 
| drawmng.scrn.left, drawmng.scrn.top, | GDK_RGB_DITHER_NORMAL, 0, 0); | 
| drawmng.rect.right, drawmng.rect.bottom, |  | 
| GDK_RGB_DITHER_NORMAL, 0, 0); |  | 
| } else { |  | 
| gdk_draw_pixbuf(d, gc, drawmng.surface, |  | 
| 0, 0, |  | 
| drawmng.scrn.left, drawmng.scrn.top, |  | 
| drawmng.rect.right, drawmng.rect.bottom, |  | 
| GDK_RGB_DITHER_NORMAL, 0, 0); |  | 
| } |  | 
 |  |  | 
 | drawmng.drawing = FALSE; | drawmng.drawing = FALSE; | 
 | } | } |