3131
3232#include "doc/pygame_doc.h"
3333
34- #if defined(_WIN32 )
35- #define PG_LSEEK _lseeki64
36- #elif defined(__APPLE__ )
37- /* Mac does not implement lseek64 */
38- #define PG_LSEEK lseek
39- #elif defined(__EMSCRIPTEN__ )
40- /* emsdk mvp 1.0 does not implement lseek64 */
41- #define PG_LSEEK lseek
42- #elif defined(_LARGEFILE64_SOURCE )
43- /* for glibc system that support LFS */
44- #define PG_LSEEK lseek64
45- #else
46- #define PG_LSEEK lseek
47- #endif
48-
4934typedef struct {
5035 PyObject * read ;
5136 PyObject * write ;
5237 PyObject * seek ;
5338 PyObject * tell ;
5439 PyObject * close ;
55- PyObject * file ;
56- int fileno ;
5740} pgRWHelper ;
5841
5942/*static const char pg_default_encoding[] = "unicode_escape";*/
@@ -319,15 +302,11 @@ _pg_rw_size(SDL_RWops *context)
319302 PyObject * tmp = NULL ;
320303 Sint64 size ;
321304 Sint64 retval = -1 ;
322- #ifdef WITH_THREAD
323- PyGILState_STATE state ;
324- #endif /* WITH_THREAD */
325305
326306 if (!helper -> seek || !helper -> tell )
327307 return retval ;
328- #ifdef WITH_THREAD
329- state = PyGILState_Ensure ();
330- #endif /* WITH_THREAD */
308+
309+ PyGILState_STATE state = PyGILState_Ensure ();
331310
332311 /* Current file position; need to restore it later.
333312 */
@@ -378,38 +357,21 @@ _pg_rw_size(SDL_RWops *context)
378357 */
379358 Py_XDECREF (pos );
380359 Py_XDECREF (tmp );
381- #ifdef WITH_THREAD
382360 PyGILState_Release (state );
383- #endif
384361 return retval ;
385362}
386363
387364static size_t
388365_pg_rw_write (SDL_RWops * context , const void * ptr , size_t size , size_t num )
389366{
390- #ifndef WITH_THREAD
391- pgRWHelper * helper = (pgRWHelper * )context -> hidden .unknown .data1 ;
392- PyObject * result ;
393-
394- if (!helper -> write )
395- return -1 ;
396-
397- result = PyObject_CallFunction (helper -> write , "y#" , (const char * )ptr ,
398- (Py_ssize_t )size * num );
399- if (!result )
400- return -1 ;
401-
402- Py_DECREF (result );
403- return num ;
404- #else /* WITH_THREAD */
405367 pgRWHelper * helper = (pgRWHelper * )context -> hidden .unknown .data1 ;
406368 PyObject * result ;
407369 size_t retval ;
408370
409- PyGILState_STATE state ;
410371 if (!helper -> write )
411372 return -1 ;
412- state = PyGILState_Ensure ();
373+
374+ PyGILState_STATE state = PyGILState_Ensure ();
413375
414376 result = PyObject_CallFunction (helper -> write , "y#" , (const char * )ptr ,
415377 (Py_ssize_t )size * num );
@@ -425,7 +387,6 @@ _pg_rw_write(SDL_RWops *context, const void *ptr, size_t size, size_t num)
425387end :
426388 PyGILState_Release (state );
427389 return retval ;
428- #endif /* WITH_THREAD */
429390}
430391
431392static int
@@ -434,10 +395,7 @@ _pg_rw_close(SDL_RWops *context)
434395 pgRWHelper * helper = (pgRWHelper * )context -> hidden .unknown .data1 ;
435396 PyObject * result ;
436397 int retval = 0 ;
437- #ifdef WITH_THREAD
438- PyGILState_STATE state ;
439- state = PyGILState_Ensure ();
440- #endif /* WITH_THREAD */
398+ PyGILState_STATE state = PyGILState_Ensure ();
441399
442400 if (helper -> close ) {
443401 result = PyObject_CallFunction (helper -> close , NULL );
@@ -453,12 +411,9 @@ _pg_rw_close(SDL_RWops *context)
453411 Py_XDECREF (helper -> write );
454412 Py_XDECREF (helper -> read );
455413 Py_XDECREF (helper -> close );
456- Py_XDECREF (helper -> file );
457414
458415 PyMem_Free (helper );
459- #ifdef WITH_THREAD
460416 PyGILState_Release (state );
461- #endif /* WITH_THREAD */
462417 SDL_FreeRW (context );
463418 return retval ;
464419}
@@ -477,9 +432,6 @@ pgRWops_FromFileObject(PyObject *obj)
477432 if (helper == NULL ) {
478433 return (SDL_RWops * )PyErr_NoMemory ();
479434 }
480- helper -> fileno = PyObject_AsFileDescriptor (obj );
481- if (helper -> fileno == -1 )
482- PyErr_Clear ();
483435 if (fetch_object_methods (helper , obj )) {
484436 PyMem_Free (helper );
485437 return NULL ;
@@ -491,9 +443,6 @@ pgRWops_FromFileObject(PyObject *obj)
491443 return (SDL_RWops * )PyErr_NoMemory ();
492444 }
493445
494- helper -> file = obj ;
495- Py_INCREF (obj );
496-
497446 /* Adding a helper to the hidden data to support file-like object RWops */
498447 rw -> hidden .unknown .data1 = (void * )helper ;
499448 rw -> size = _pg_rw_size ;
@@ -511,17 +460,11 @@ _pg_rw_seek(SDL_RWops *context, Sint64 offset, int whence)
511460 pgRWHelper * helper = (pgRWHelper * )context -> hidden .unknown .data1 ;
512461 PyObject * result ;
513462 Sint64 retval ;
514- #ifdef WITH_THREAD
515- PyGILState_STATE state ;
516-
517- if (helper -> fileno != -1 ) {
518- return PG_LSEEK (helper -> fileno , offset , whence );
519- }
520463
521464 if (!helper -> seek || !helper -> tell )
522465 return -1 ;
523466
524- state = PyGILState_Ensure ();
467+ PyGILState_STATE state = PyGILState_Ensure ();
525468
526469 if (!(offset == 0 &&
527470 whence == SEEK_CUR )) /* being seek'd, not just tell'd */
@@ -553,35 +496,6 @@ _pg_rw_seek(SDL_RWops *context, Sint64 offset, int whence)
553496 PyGILState_Release (state );
554497
555498 return retval ;
556- #else /* ~WITH_THREAD */
557- if (helper -> fileno != -1 ) {
558- return PG_LSEEK (helper -> fileno , offset , whence );
559- }
560-
561- if (!helper -> seek || !helper -> tell )
562- return -1 ;
563-
564- if (!(offset == 0 && whence == SEEK_CUR )) /*being called only for 'tell'*/
565- {
566- result = PyObject_CallFunction (helper -> seek , "Li" , (long long )offset ,
567- whence );
568- if (!result )
569- return -1 ;
570- Py_DECREF (result );
571- }
572-
573- result = PyObject_CallFunction (helper -> tell , NULL );
574- if (!result )
575- return -1 ;
576-
577- retval = PyLong_AsLongLong (result );
578- if (retval == -1 && PyErr_Occurred ())
579- PyErr_Clear ();
580-
581- Py_DECREF (result );
582-
583- return retval ;
584- #endif /* ~WITH_THREAD*/
585499}
586500
587501static size_t
@@ -590,25 +504,11 @@ _pg_rw_read(SDL_RWops *context, void *ptr, size_t size, size_t maxnum)
590504 pgRWHelper * helper = (pgRWHelper * )context -> hidden .unknown .data1 ;
591505 PyObject * result ;
592506 Py_ssize_t retval ;
593- #ifdef WITH_THREAD
594- PyGILState_STATE state ;
595- #endif /* WITH_THREAD */
596-
597- if (helper -> fileno != -1 ) {
598- retval = read (helper -> fileno , ptr , (unsigned int )(size * maxnum ));
599- if (retval == -1 ) {
600- return -1 ;
601- }
602- retval /= size ;
603- return retval ;
604- }
605507
606508 if (!helper -> read )
607509 return -1 ;
608510
609- #ifdef WITH_THREAD
610- state = PyGILState_Ensure ();
611- #endif /* WITH_THREAD */
511+ PyGILState_STATE state = PyGILState_Ensure ();
612512 result = PyObject_CallFunction (helper -> read , "K" ,
613513 (unsigned long long )size * maxnum );
614514 if (!result ) {
@@ -633,9 +533,7 @@ _pg_rw_read(SDL_RWops *context, void *ptr, size_t size, size_t maxnum)
633533 Py_DECREF (result );
634534
635535end :
636- #ifdef WITH_THREAD
637536 PyGILState_Release (state );
638- #endif /* WITH_THREAD */
639537
640538 return retval ;
641539}
0 commit comments