Changeset 2995

Show
Ignore:
Timestamp:
2003年02月14日 23時04分57秒 (6 years ago)
Author:
miyoshi
Message:

* mw32term.c (mw32_destroy_frame_hdc): Clear *pf instead of pf.
(mw32_draw_relief_rect): Unify the calls of RestoreDC().
(mw32_draw_image_foreground): Narrow the clipping rectangle.
Ensure deletion of HDC and HGDIOBJ.

* mw32font.c (mw32_set_windows_logical_font): Defer initializing
message_thread_hdc.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • work/cvs2svn/src/ChangeLog.Meadow

    r2993 r2995  
     12003-02-14  MIYOSHI Masanori  <miyoshi@boreas.dti.ne.jp> 
     2 
     3        * mw32term.c (mw32_destroy_frame_hdc): Clear *pf instead of pf. 
     4        (mw32_draw_relief_rect): Unify the calls of RestoreDC(). 
     5        (mw32_draw_image_foreground): Narrow the clipping rectangle. 
     6        Ensure deletion of HDC and HGDIOBJ. 
     7 
     8        * mw32font.c (mw32_set_windows_logical_font): Defer initializing 
     9        message_thread_hdc. 
     10 
    1112003-02-13  MIYOSHI Masanori  <miyoshi@boreas.dti.ne.jp> 
    212 
  • work/cvs2svn/src/mw32font.c

    r2992 r2995  
    372372  mw32_windows_font *pwf; 
    373373  HFONT hf; 
    374   HDC mhdc = INVALID_HANDLE_VALUE; 
    375  
    376   if (f->output_data.mw32->message_thread_hdc == INVALID_HANDLE_VALUE) 
    377     { 
    378       mhdc = GetDC (FRAME_MW32_WINDOW (f)); 
    379       mw32_setup_default_hdc (mhdc); 
    380       f->output_data.mw32->message_thread_hdc = mhdc; 
    381     } 
    382374 
    383375  pwf = (mw32_windows_font*) xmalloc(sizeof(mw32_windows_font)); 
     
    391383      TEXTMETRIC tm; 
    392384      int flag; 
     385      HDC mhdc = INVALID_HANDLE_VALUE; 
     386 
     387      if (f->output_data.mw32->message_thread_hdc == INVALID_HANDLE_VALUE) 
     388        { 
     389          mhdc = GetDC (FRAME_MW32_WINDOW (f)); 
     390          mw32_setup_default_hdc (mhdc); 
     391          f->output_data.mw32->message_thread_hdc = mhdc; 
     392        } 
    393393 
    394394      hwnd = FRAME_MW32_WINDOW(f); 
  • work/cvs2svn/src/mw32term.c

    r2993 r2995  
    544544 
    545545HDC 
    546 mw32_get_frame_hdc(struct frame *f) 
     546mw32_get_frame_hdc (struct frame *f) 
    547547{ 
    548548  int i; 
    549549  HDC *phdc, hdc; 
    550550  struct frame **pf; 
    551   struct mw32_display_info *dpyinfo = FRAME_MW32_DISPLAY_INFO(f); 
     551  struct mw32_display_info *dpyinfo = FRAME_MW32_DISPLAY_INFO (f); 
    552552 
    553553  phdc = dpyinfo->alloced_DCs; 
    554554  pf = dpyinfo->alloced_DC_frames; 
    555   for (i = 0;i < MAX_DC_NUM;i++) 
     555  for (i = 0; i < MAX_DC_NUM; i++) 
    556556    { 
    557557      if (*phdc == INVALID_HANDLE_VALUE) 
    558558        { 
    559           hdc = GetDC (FRAME_MW32_WINDOW(f)); 
     559          hdc = GetDC (FRAME_MW32_WINDOW (f)); 
    560560          f->output_data.mw32->hdc = *phdc = hdc; 
    561561          *pf = f; 
     
    571571 
    572572      RestoreDC (*phdc, -1); 
    573       ReleaseDC (FRAME_MW32_WINDOW(*pf), *phdc); 
     573      ReleaseDC (FRAME_MW32_WINDOW (*pf), *phdc); 
    574574      pf[0]->output_data.mw32->hdc = INVALID_HANDLE_VALUE; 
    575       memmove(phdc, phdc + 1, sizeof(HDC) * (MAX_DC_NUM - 1)); 
    576       memmove(pf, pf + 1, sizeof(struct frame*) * (MAX_DC_NUM - 1)); 
    577       hdc = GetDC (FRAME_MW32_WINDOW(f)); 
     575      memmove (phdc, phdc + 1, sizeof (HDC) * (MAX_DC_NUM - 1)); 
     576      memmove (pf, pf + 1, sizeof (struct frame*) * (MAX_DC_NUM - 1)); 
     577      hdc = GetDC (FRAME_MW32_WINDOW (f)); 
    578578      f->output_data.mw32->hdc = phdc[MAX_DC_NUM - 1] = hdc; 
    579579      pf[MAX_DC_NUM - 1] = f; 
     
    589589 
    590590void 
    591 mw32_destroy_frame_hdc(struct frame *f) 
     591mw32_destroy_frame_hdc (struct frame *f) 
    592592{ 
    593593  HDC hdc; 
     
    597597    { 
    598598      int i; 
    599       struct mw32_display_info *dpyinfo = FRAME_MW32_DISPLAY_INFO(f); 
     599      struct mw32_display_info *dpyinfo = FRAME_MW32_DISPLAY_INFO (f); 
    600600      HDC *phdc = dpyinfo->alloced_DCs; 
    601601      struct frame **pf = dpyinfo->alloced_DC_frames; 
    602602 
    603       for (i = 0;i < MAX_DC_NUM;i++) 
     603      for (i = 0; i < MAX_DC_NUM; i++) 
    604604        { 
    605605          if (*phdc == hdc) 
    606606            { 
    607               xassert(*pf == f); 
     607              xassert (*pf == f); 
    608608              f->output_data.mw32->hdc = *phdc = INVALID_HANDLE_VALUE; 
    609               pf = NULL; 
     609              *pf = NULL; 
    610610              break; 
    611611            } 
     
    613613          pf++; 
    614614        } 
    615       xassert(i < MAX_DC_NUM); 
     615      xassert (i < MAX_DC_NUM); 
    616616      RestoreDC (hdc, -1); 
    617617      ReleaseDC (FRAME_MW32_WINDOW(f), hdc); 
    618       f->output_data.mw32->hdc = INVALID_HANDLE_VALUE; 
    619618    } 
    620619} 
     
    36233622  bottom_y--; 
    36243623  right_x--; 
    3625   if (width <= 0) return; 
    36263624  if (width == 1) 
    36273625    { 
     
    36503648      /* To draw the point (left_x, bottom_y), sub 1 to the end.  */ 
    36513649      LineTo (hdc, left_x - 1, bottom_y); 
    3652  
    3653       RestoreDC (hdc, -1); 
    3654     } 
    3655   else 
     3650    } 
     3651  else if (width > 1) 
    36563652    { 
    36573653      HBRUSH hb1, hb2; 
     
    37083704                     right_x + 1, bottom_y + 1); 
    37093705        } 
    3710       RestoreDC (hdc, -1); 
    37113706      DeleteObject (hb1); 
    37123707      DeleteObject (hb2); 
    37133708    } 
     3709  RestoreDC (hdc, -1); 
    37143710  DeleteObject (hp1); 
    37153711  DeleteObject (hp2); 
     
    38603856        { 
    38613857          DeleteObject (*phbmp); 
     3858          *phbmp = 0; 
    38623859          return 0; 
    38633860        } 
     
    38733870mw32_draw_image_foreground (struct glyph_string *s) 
    38743871{ 
    3875   HBITMAP hbmp, hbmpmask, holdbmp; 
    3876   HDC hdcimg; 
     3872  HBITMAP hbmp, hbmpmask; 
    38773873  int x; 
    38783874  int y = s->ybase - image_ascent (s->img, s->face); 
     
    38953891    { 
    38963892      RECT clip_rect, image_rect, r; 
    3897       hdcimg = CreateCompatibleDC (s->hdc); 
     3893      HDC hdcimg = CreateCompatibleDC (s->hdc); 
    38983894      if (!hdcimg) return; 
    38993895 
     
    39013897      image_rect.left = x; 
    39023898      image_rect.top = y; 
    3903       image_rect.right = x + s->img->width
    3904       image_rect.bottom = y + s->img->height
     3899      image_rect.right = x + s->img->width - 1
     3900      image_rect.bottom = y + s->img->height - 1
    39053901 
    39063902      if (mw32_intersect_rectangles (&clip_rect, &image_rect, &r)) 
    39073903        { 
    3908           holdbmp = SelectObject (hdcimg, hbmp); 
     3904          HGDIOBJ holdbmp = SelectObject (hdcimg, hbmp); 
    39093905          /* we ignore s->img->mask.  Use hbmpmask instead.  */ 
    39103906          if (hbmpmask) 
     
    39143910                { 
    39153911                  HBITMAP hsrc = CreateCompatibleBitmap (s->hdc, 
    3916                                                        r.right - r.left + 1, 
     3912                                                      r.right - r.left + 1, 
    39173913                                                         r.bottom - r.top + 1); 
    39183914                  if (hsrc) 
    39193915                    { 
    3920                       SelectObject (hdc_src, hsrc); 
     3916                      HGDIOBJ hsrc_old = SelectObject (hdc_src, hsrc); 
    39213917               
    39223918                      /* Fill the background area with black mask. */ 
     
    39443940                              r.right - r.left + 1, r.bottom - r.top + 1, 
    39453941                              hdc_src, 0, 0, SRCPAINT); 
    3946                       DeleteObject (hsrc); 
     3942                      SelectObject (hdc_src, hsrc_old); 
    39473943                    } 
    3948                   DeleteObject (hdc_src); 
     3944                  DeleteDC (hdc_src); 
     3945                  DeleteObject (hsrc); 
    39493946                } 
    39503947            } 
    39513948          else 
    39523949            { 
    3953               holdbmp = SelectObject (hdcimg, hbmp); 
    39543950              BitBlt (s->hdc, 
    39553951                      r.left, r.top, 
     
    39573953                      hdcimg, 0, 0, SRCCOPY); 
    39583954            } 
    3959         } 
     3955          SelectObject (hdcimg, holdbmp); 
     3956        } 
     3957      DeleteDC (hdcimg); 
     3958      DeleteObject (hbmp); 
     3959      DeleteObject (hbmpmask); 
     3960 
    39603961      /* When the image has a mask, we can expect that at 
    39613962         least part of a mouse highlight or a block cursor will 
     
    39733974          SelectObject (s->hdc, hold); 
    39743975        } 
    3975  
    3976       SelectObject (hdcimg, holdbmp); 
    3977       DeleteDC (hdcimg); 
    3978       DeleteObject (hbmp); 
    3979       if (hbmpmask) DeleteObject (hbmpmask); 
    39803976    } 
    39813977  else